Diccionario de Acción <T> Delegados

Tengo objetoMensajes serializados XML entrar en una clase llamadaMensajeRouter. El XML contiene el nombre del Tipo del que fue serializado, y necesito poderinvoca diferentes métodos de delegado según el tipo que no se conoce hasta el tiempo de ejecución. No soy extremadamente fuerte en genéricos, así que espero que esto tenga sentido para alguien ...

Me gustaría que MessageRouter proporcione unRegistrarseDelegateForType método como tal:

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

Y luego almacene los tipos, o la representación de cadena del tipo en un Diccionario como este:

Dictionary<Type, Action<T>> registeredDelegates;

De esa manera, puedo hacer algo como el siguiente pseudocódigo, llamando al delegado asignado del tipo y pasando el objeto deserializado:

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

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

Así que mis preguntas son:

¿Cómo se define un Diccionario que puede contener unType como clave y genéricoAction<T> como un valor, y que el método RegisterDelegateForType rellene el diccionario?Si eso no es posible, ¿cuál es la mejor manera de hacer esto?

Respuestas a la pregunta(2)

Su respuesta a la pregunta