¿Alguien ha oído hablar de un "diccionario de tipo" que utiliza tipos como claves y admite la herencia?Tipo Diccionario?
En mi solicitud me gustaría tener un diccionario de tipos de funciones, más o menos así:
Dictionary<Type, Func<object, object>> Transformers;
La idea es que se utiliza para transformar un objeto de alguna manera en función de su tipo:
// Transform an object 'obj'
object result = Transformers[obj.GetType()](obj)
Un diccionario ordinaria tiene la desventaja de que el tipo debe coincidir exactamente. Entonces, si escribí un transformador para IList < T>, no tiene sentido ponerlo en el diccionario de Transformers porque ningún objeto tiene el tipo IList < T> (solo T [], List < T>, etc.) En otras palabras , si obj es una lista < T>, el transformador para IList < T> no se encontrará mediante una búsqueda en un diccionario común.
Suponiendo que no existe una TypeDictionary < TValue>, podría considerar escribir una si no es demasiado difícil. ¿Alguna idea de cómo se podría lograr?
Eso no funcionaría. ¿Qué código hash obtendría el IEqualityComparer para una clase B que deriva de A e implementa IA e IB? Además, tenga en cuenta que el Diccionario debería poder mantener las teclas para 'List', 'IList ' y 'object' al mismo tiempo. –
Qwertie
Tienes razón, no pensé en eso. –
@Qwertie en ese caso, ¿qué devolvería su diccionario si hubiera varias coincidencias en el diccionario para un tipo? ¿Debería devolver todas las ocurrencias, solo las más especializadas, etc.? –