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.
MetaDatatipi 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 unMetadataoggetto 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?