Słownik działania <T> Delegaci

Mam przedmiotWiadomości szeregowane XML wchodząc do klasy zwanejMessageRouter. XML zawiera nazwę typu, z której został serializowany, i muszę mieć możliwośćwywołaj różne metody delegowania w zależności od typu, który nie jest znany do czasu wykonania. Nie jestem bardzo silny w generykach, więc miejmy nadzieję, że będzie to miało sens dla kogoś ...

Chciałbym, aby MessageRouter dostarczyłRegisterDelegateForType taka metoda:

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

Następnie przechowuj typy lub reprezentację łańcuchową typu w Słowniku takim jak ten:

Dictionary<Type, Action<T>> registeredDelegates;

W ten sposób mogę zrobić coś takiego jak następujący pseudokod, wywołując przypisanego delegata typu i przekazując obiekt zdesrializowany:

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

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

Moje pytania to:

Jak zdefiniować słownik, który może zawieraćType jako klucz i rodzajAction<T> jako wartość i czy metoda RegisterDelegateForType wypełni słownik?Jeśli to nie jest możliwe, jaki jest najlepszy sposób, aby to zrobić?

questionAnswers(2)

yourAnswerToTheQuestion