Ce n'est probablement pas possible, mais j'ai cette classe:
public class Metadata<DataType> where DataType : struct
{
private DataType mDataType;
}
Il y a plus à cela, mais gardons les choses simples. Le type générique (DataType) est limité aux types valeur par l'instruction where. Ce que je veux faire, c'est avoir une liste de ces objets de métadonnées de différents types (DataType). Tel que:
List<Metadata> metadataObjects;
metadataObjects.Add(new Metadata<int>());
metadataObjects.Add(new Metadata<bool>());
metadataObjects.Add(new Metadata<double>());
Est-ce seulement possible?
List<Metadata<object>>
fait l'affaire.
MetaData
types de référence au lieu de vos types de valeur d'origine sans aucune information (au moment de la compilation) sur le type de valeur sous-jacent de chaque élément, c'est effectivement "boxing".
List<object>
? Ils n'arrêteront pas de boxer / déballer, ils ne supprimeront pas le besoin de casting, et finalement, vous obtenez unMetadata
objet qui ne vous dit rien sur le réelDataType
, je cherchais une solution pour résoudre ces problèmes. Si vous allez déclarer une interface / classe, juste pour pouvoir mettre le type générique d'implémentation / dérivé dans une liste générique, en quoi cela diffère -t-il de l'utilisation d'unList<object>
autre que d'avoir une couche vide de sens?