Quelqu'un at-il entendu parler d'un "dictionnaire de types" qui utilise les types comme clés et prend en charge l'héritage?Type Dictionnaire?
Dans ma demande, je voudrais avoir un dictionnaire de types à des fonctions, un peu comme ceci:
Dictionary<Type, Func<object, object>> Transformers;
L'idée est qu'il serait utilisé pour transformer un objet d'une certaine façon en fonction de sa type:
// Transform an object 'obj'
object result = Transformers[obj.GetType()](obj)
Un dictionnaire ordinaire présente l'inconvénient que le type doit correspondre exactement. Donc, si j'ai écrit un transformateur pour IList < T>, il est inutile de le placer dans le dictionnaire Transformers car aucun objet n'a le type IList < T> (seulement T [], Liste < T>, etc.) En d'autres termes , si obj est une liste < T>, le transformateur pour IList < T> ne sera pas trouvé par une recherche dans un dictionnaire ordinaire. En supposant qu'il n'y ait pas de TypeDictionary < TValue>, je pourrais envisager d'en écrire un si ce n'est pas trop difficile. Des idées comment cela pourrait être accompli?
Cela ne fonctionnerait pas. Quel code de hachage IEqualityComparer renvoie-t-il pour une classe B dérivée de A et implémente IA et IB? Aussi, gardez à l'esprit que le dictionnaire devrait être capable de contenir des clés pour 'List', 'IList ' et 'object' simultanément. –
Qwertie
Vous avez raison, je n'ai pas réfléchi à ça. –
@Qwertie dans ce cas, quel serait votre dictionnaire s'il y avait plusieurs correspondances dans le dictionnaire pour un type? Devrait-il retourner toutes les occurrences, seulement les plus spécialisées, etc.? –