Questo probabilmente non è possibile, ma ho questa classe:
public class Metadata<DataType> where DataType : struct
{
private DataType mDataType;
}
C'è di più, ma manteniamolo semplice. Il tipo generico (DataType) è limitato ai tipi di valore dall'istruzione where. Quello che voglio fare è avere un elenco di questi oggetti Metadata di vario tipo (DataType). Ad esempio:
List<Metadata> metadataObjects;
metadataObjects.Add(new Metadata<int>());
metadataObjects.Add(new Metadata<bool>());
metadataObjects.Add(new Metadata<double>());
È anche possibile?
List<Metadata<object>>
fa il trucco.
MetaData
tipi di riferimento invece dei tuoi tipi di valore originali senza informazioni (tempo di compilazione) sul tipo di valore sottostante di ciascun elemento, che è effettivamente "boxing".
List<object>
? Non smetteranno di boxe / unboxing, non rimuoveranno la necessità del casting e, alla fine, stai ottenendo unMetadata
oggetto che non ti dice nulla sul realeDataType
, stavo cercando una soluzione per affrontare questi problemi. Se hai intenzione di dichiarare un'interfaccia / classe, solo per essere in grado di mettere il tipo generico di implementazione / derivato in un elenco generico, quanto è diverso dall'usare unList<object>
altro che avere un livello insignificante?