Hat jemand von einem "Typ-Wörterbuch" gehört, das Typen als Schlüssel verwendet und Vererbung unterstützt?Typ Wörterbuch?
In meiner Anwendung würde Ich mag ein Wörterbuch von Typen Funktionen haben, irgendwie wie folgt aus:
Dictionary<Type, Func<object, object>> Transformers;
Die Idee ist, dass es verwendet werden würde, um ein Objekt in irgendeiner Art und Weise zu verändern, basierend auf seiner Typ:
// Transform an object 'obj'
object result = Transformers[obj.GetType()](obj)
Ein gewöhnliches Wörterbuch hat den Nachteil, dass der Typ genau übereinstimmen muss. Wenn ich also einen Transformator für IList < T> geschrieben habe, ist es sinnlos, ihn in das Transformers-Dictionary zu schreiben, weil kein Objekt vom Typ IList < T> ist (nur T [], Liste < T>, usw.) Mit anderen Worten , wenn obj ist eine Liste < T>, der Transformator für IList < T> wird nicht durch eine Suche in einem gewöhnlichen Wörterbuch gefunden werden.
Angenommen, es gibt kein TypeDictionary < TValue>, könnte ich einen schreiben, wenn es nicht zu schwer ist. Irgendwelche Ideen, wie es erreicht werden könnte?
Das würde nicht funktionieren. Welchen Hashcode würde der IEqualityComparer für eine von A abgeleitete Klasse B zurückgeben und IA und IB implementieren? Beachten Sie auch, dass das Dictionary Schlüssel gleichzeitig für die Listen ',' IList 'und' object' enthalten kann. –
Qwertie
Sie haben Recht, ich habe das nicht durch gedacht. –
@Qwertie in diesem Fall, was würde Ihr Wörterbuch zurückgeben, wenn es mehrere Übereinstimmungen im Wörterbuch für einen Typ gäbe? Sollte es alle Vorkommen zurückgeben, nur die am meisten spezialisierten, usw.? –