Словарь действий <T> делегатов
У меня есть объектXML сериализованные сообщения входить в класс под названиемMessageRouter, XML содержит имя типа, с которого оно было сериализовано, и мне нужно иметь возможностьвызывать различные методы делегата в зависимости от типа, которые не известны до времени выполнения, Я'Я не очень силен в дженериках, так что, надеюсь, это будет иметь смысл для кого-то ... Я
Я хотел бы MessageRouter, чтобы обеспечитьRegisterDelegateForType метод вроде так:
myMessageRouter.RegisterDelegateForType(new Action(myActionHandler));
А затем сохранить типы или типСтроковое представление в словаре:
Dictionary registeredDelegates;
Таким образом, я могу сделать что-то вроде следующего псевдокода, вызывая типНазначенный делегат и передавший десериализованный объект:
Type xmlSerializedType = TypeFromXmlString(incomingXml);
object deserializedObject = DeserializeObjectFromXml(xmlSerializedType, incomingXml);
// then invoke the action and pass in the deserialized object
registeredDelegates[xmlSerializedType](deserializedObject);
Итак, мои вопросы:
Как вы определяете словарь, который может содержатьType
в качестве ключа и общегоAction
в качестве значения, а метод RegisterDelegateForType заполняет словарь?Если это'не возможно, чтолучший способ сделать это?