L'idea iniziale era di creare un oggetto a run Time, e quindi partendo della classe Emit e IlGenerator, mi sono poi domandato per quale motivo creare un intera classe quando la necessità era di creare solo propietà ?
Da qui quintali di possibili ragionamenti su come agire, senza trovare troppo conforto su web.
La conclusione è stata questa:
public class ghost
{
public Dictionary<string, object> Properties = new Dictionary<string, object>();
public object this[string name]
{
get
{
if (Properties.ContainsKey(name))
{
return Properties[name];
}
return null;
}
set
{
Properties[name] = value;
}
}
public ghost(string[] properties)
{
for ( int i = 0; i <properties.Length; i++)
{
Properties.Add(properties[i],null);
}
}
}
Fantastico, bellissimo... MA ANCHE NO... l'ho rinominato come ABOMINIO !
Già perchè in mano a programmatori "folli" ( sai che sto parlando di TE M.C.) questa classe è un danno di prima categoria.
Già perchè non solo non generica, usa dictionary che ammazza ram e performance, ma è pure "comoda" perchè ti permette di accedere alle proprietà indicandole per nome...
ghost g= new ghost( new string[] {"ID","Name","Description"});
ghost g1 = new ghost( new string[] { "ID", "Name", "Description","Cammello" });
ghost g2 = new ghost( new string[] { "Arosio", "Justina", "cheNeso" });
List<ghost> gx = new List<ghost>();
gx.Add(g);
gx.Add(g1);
gx.Add(g2);
string curProperty ="ID";
object curValue = new DataColumn("case");
g1["ID"] = g1["Name"];
g1[curProperty] = curValue;
Arrivando a poter fare cose di questo tipo ...
Ammetto da piccole classi dipendo grandi problematiche...
Nessun commento:
Posta un commento