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ć?