To chyba nie jest możliwe, ale mam taką klasę:
public class Metadata<DataType> where DataType : struct
{
private DataType mDataType;
}
Jest w tym coś więcej, ale nie komplikujmy. Typ ogólny (DataType) jest ograniczony do typów wartości przez instrukcję where. To, co chcę zrobić, to mieć listę tych obiektów metadanych różnych typów (DataType). Jak na przykład:
List<Metadata> metadataObjects;
metadataObjects.Add(new Metadata<int>());
metadataObjects.Add(new Metadata<bool>());
metadataObjects.Add(new Metadata<double>());
Czy to w ogóle możliwe?
List<Metadata<object>>Zrób sztuczkę.
MetaDatatypów referencyjnych zamiast oryginalnych typów wartości bez informacji (w czasie kompilacji) o bazowym typie wartości każdego elementu, co jest efektywnym „opakowaniem”.
List<object>? Nie przestaną boksować / rozpakowywać, nie usuwają potrzeby odlewania, a ostatecznie otrzymujeszMetadataobiekt, który nie mówi ci nic o faktycznymDataType, szukałem rozwiązania tych problemów. Jeśli zamierzasz zadeklarować interfejs / klasę, tylko po to, aby móc umieścić implementujący / wyprowadzony typ ogólny na liście ogólnej, jak różni się to od używaniaList<object>innej niż posiadanie bezsensownej warstwy?