Qualcuno ha sentito parlare di un "dizionario di tipo" che utilizza i tipi come chiavi e supporta l'ereditarietà?Tipo dizionario?
Nella mia domanda mi piacerebbe avere un dizionario da tipi di funzioni, un po 'come questo:
Dictionary<Type, Func<object, object>> Transformers;
L'idea è che sarebbe stato utilizzato per trasformare un oggetto in qualche modo in base alla sua tipo:
// Transform an object 'obj'
object result = Transformers[obj.GetType()](obj)
Un dizionario comune ha lo svantaggio che il tipo deve corrispondere esattamente. Quindi, se ho scritto un trasformatore per IList < T>, è inutile metterlo nel dizionario Transformers perché nessun oggetto ha il tipo IList < T> (solo T [], Lista < T>, etc.) In altre parole, , se obj è una lista < T>, il trasformatore per IList < T> non verrà trovato da una ricerca in un dizionario ordinario.
Supponendo che non ci sia qualcosa come un TypeDictionary < TValue, potrei considerare di scriverne uno se non è troppo difficile. Qualche idea su come potrebbe essere realizzata?
Che non avrebbe funzionato. Quale codice hash restituirebbe IEqualityComparer per una classe B che deriva da A e implementa IA e IB? Inoltre, tieni presente che il dizionario dovrebbe essere in grado di contenere le chiavi per 'Lista', 'IList ' e 'oggetto' contemporaneamente. –
Qwertie
Hai ragione, non ci ho pensato. –
@Qwertie in tal caso, cosa restituirebbe il dizionario se nel dizionario fossero presenti più corrispondenze per un tipo? Dovrebbe restituire tutte le occorrenze, solo le più specializzate, ecc.? –