Bu muhtemelen mümkün değildir, ancak bu sınıf var:C# - tek bir listede birden çok genel türler
public class Metadata<DataType> where DataType : struct
{
private DataType mDataType;
}
fazlası var, ama en basit tutalım. Genel tür (DataType), nerede ifade tarafından değer türleri ile sınırlıdır. Yapmak istediğim, çeşitli türlerde (DataType) bu Meta Veri nesnelerinin bir listesine sahip olmak. Örneğin:
List<Metadata> metadataObjects;
metadataObjects.Add(new Metadata<int>());
metadataObjects.Add(new Metadata<bool>());
metadataObjects.Add(new Metadata<double>());
Bu mümkün mü?
public interface IMetaData { }
public class Metadata<DataType> : IMetaData where DataType : struct
{
private DataType mDataType;
}
Aşağıdaki cevaplarda yalnızca bir "Liste
Hem soyut taban sınıfı hem de arabirim, listeye eklenebilecek öğelerin türünü kısıtlayarak bir derece denetim sağlar. Boksun buna nasıl geldiğini de göremiyorum. – 0b101010
Elbette, eğer .NET v4.0 veya üstünü kullanıyorsanız, o zaman kovaryans çözümdür. 'List>' hile yapar. –
0b101010