Diciamo che ho un oggetto che rappresenta un campo di dati, quell'oggetto ha bisogno delle seguenti proprietà: Nome, Tipo, Valore, Lunghezza. Qui è l'oggetto:Elenco generico di oggetti generici
class Field<T>
{
public string Name { get; set; }
public Type Type
{
get
{
return typeof(T);
}
}
public int Length { get; set; }
public T Value { get; set; }
}
ho usato farmaci generici, perché voglio forzare l'utente del codice di essere solo in grado di assegnare un valore di certo tipo.
Ora il problema è quando voglio creare un elenco di campi.
Se creo l'elenco come List<Field<object>>
, allora possiamo assegnare qualsiasi valore a un determinato campo nell'elenco e quando chiediamo il tipo, otteniamo "oggetto".
Il fatto è che in questa lista potrei desiderare che pochi campi contengano stringhe, pochi dati, date e persino oggetti personalizzati che a loro volta avranno un elenco di campi ...
I generici sono una buona soluzione per qualcosa di simile quella? Se sì, come andrei a implementarlo? In caso contrario, qual è il modo migliore?
--- EDIT ---
solo per aggiungere un po 'più di fondo:
1. Mi potrebbe desiderare un elenco di campi, e ogni campo terrà diverso tipo di dati, in questo modo:
List<Field<object>> lst = new List<Field<object>>();
lst.Add(new Field<string>());
lst.Add(new Field<int>());
lst.Add(new Field<SomeObjectFromMyApp>());
2. in seguito dovrò interrogare questi oggetti, ed i loro attributi automaticamente in un ciclo, qualcosa del genere:
foreach(Field<object> fld in lst)
{
Type t = fld.Type;
//do some other stuff
}
Cosa vuoi esattamente? Non capisco questa frase: "in quella lista potrei volere pochi campi che contengono stringhe, pochi detengono valori, date e persino oggetti personalizzati che a loro volta avranno una lista di campi" – Florian
Esattamente quello che dice, avrò pochi diversi elenchi di campi, ma ogni campo su quell'elenco potrebbe contenere tipi di dati diversi (int, string o qualche oggetto personalizzato). –