Dicionário de Ação <T> Delegados
Eu tenho objetoMensagens serializadas de XML entrando em uma classe chamadaMessageRouter. O XML contém o nome do tipo de onde foi serializado, e eu preciso ser capaz deinvocar diferentes métodos delegados dependendo do tipo que não são conhecidos até o tempo de execução. Eu não sou extremamente forte em genéricos, então espero que isso faça sentido para alguém ...
Eu gostaria que o MessageRouter fornecesseRegisterDelegateForType método assim:
myMessageRouter.RegisterDelegateForType(new Action<MySerializableType>(myActionHandler));
E, em seguida, armazene os tipos ou a representação de string do tipo em um Dicionário como este:
Dictionary<Type, Action<T>> registeredDelegates;
Dessa forma, posso fazer algo como o seguinte pseudocódigo, chamando o delegado atribuído do tipo e passando o objeto desserializado:
Type xmlSerializedType = TypeFromXmlString(incomingXml);
object deserializedObject = DeserializeObjectFromXml(xmlSerializedType, incomingXml);
// then invoke the action and pass in the deserialized object
registeredDelegates[xmlSerializedType](deserializedObject);
Então minhas perguntas são:
Como você define um dicionário que pode conter umType
como chave e genéricaAction<T>
como um valor e ter o método RegisterDelegateForType preencher o dicionário?Se isso não for possível, qual é a melhor maneira de fazer isso?