Aktionswörterbuch <T> Delegierte

Ich habe ein ObjektXML serialisierte Nachrichten in eine Klasse namens kommenMessageRouter. Das XML enthält den Typnamen, von dem es serialisiert wurde, und ich muss dazu in der Lage seinRufen Sie je nach Typ unterschiedliche Delegate-Methoden auf, die erst zur Laufzeit bekannt sind. Ich bin nicht besonders stark in Generika, also hoffentlich ergibt das für jemanden Sinn ...

Ich möchte, dass MessageRouter eineRegisterDelegateForType Methode wie folgt:

myMessageRouter.RegisterDelegateForType(new Action<MySerializableType>(myActionHandler));

Speichern Sie dann die Typen oder die Zeichenfolgendarstellung des Typs in einem Dictionary wie folgt:

Dictionary<Type, Action<T>> registeredDelegates;

Auf diese Weise kann ich so etwas wie den folgenden Pseudocode ausführen, den zugewiesenen Delegaten des Typs aufrufen und das deserialisierte Objekt übergeben:

Type xmlSerializedType = TypeFromXmlString(incomingXml);
object deserializedObject = DeserializeObjectFromXml(xmlSerializedType, incomingXml);

// then invoke the action and pass in the deserialized object
registeredDelegates[xmlSerializedType](deserializedObject);

Meine Fragen sind also:

Wie definieren Sie ein Wörterbuch, das a. Enthalten kann?Type als Schlüssel und als GenerikumAction<T> als Wert und hat die RegisterDelegateForType-Methode das Wörterbuch gefüllt?Wenn das nicht möglich ist, wie geht das am besten?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage