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?

questionAnswers(2)

yourAnswerToTheQuestion