Mon petit esprit ne peut pas trouver une solution élégante à ce problème. Supposons que je classe comme celle-ci:Solution générique aux classes simples + usine
public class Foo<T>
{
public RecordType Type { get; set; }
public T Value { get; set; }
}
Où RecordType
peut ressembler à ceci:
public enum RecordType
{
EmptyRecord,
BooleanRecord,
IntegerRecord,
StringRecord,
ByteRecord
}
L'objectif est de traiter une IEnumerable<Foo<T>>
uniforme pour une itération et/ou pour allumer le RecordType
et effectuer une action en évitant de mettre en boîte les types intrinsèques si possible. En outre, il serait bon d'utiliser une usine pour créer ces Foo
d'une méthode d'usine.
J'ai fouillé avec quelques implémentations rapides de la communalité dans la classe de base ou l'interface et rien de ce que j'ai trouvé avec répondu à ce problème, apparemment, très simple avec élégance.
Petite modification: J'aurais dû mentionner que mon objectif principal est d'utiliser le .Value sans forcer un casting sur l'appelant.
Est-ce que T est corrélé au RecordType de quelque façon que ce soit? – Grzenio
Bonne question, oui, supposons que T est booléen, int, string, byte [] respectivement (pour cet exemple) – Marc