У меня есть класс, который обрабатывает отправку & через сокет между моим приложением и сетью. Этот класс использует другие классы, включая класс соединения sockket низкого уровня и класс обработчика PDU, который создает сообщения для отправки и обработки полученных данных.Автоматическое создание пользовательских событий во время выполнения
Теперь я использую событие, чтобы сигнализировать моему классу, что для класса соединения низкого уровня есть данные для него, и мне нужно отправить эти данные обработчику PDU для преобразования информации, которую приложение может использовать, а затем передать данные в приложение ,
Для будущего использования, я пытаюсь получить класс как можно более общий, так что на будущих проектах Server/Client мне нужно будет только изменить обработчик PDU, чтобы принять во внимание новые доступные операции и как обрабатывать данные.
Все, что хорошо идет, и теперь я столкнулся с проблемой передачи данных обратно в приложение. Для этого мой логический подход - это событие, позволяющее приложению узнать, что данные готовы для сбора. Для этого я могу:
a) имеет одно событие и позволяет приложению сортировать, какое сообщение оно находится с помощью кода операции (выполнимо) b) Имейте одно событие за рабочий код и подписаться на все приложения из них и, таким образом, знать в начале, что он получает
Принимая во внимание идею создания общих вещей и подхода, изложенного в b, существует ли способ динамически создавать события на основе заданной подписи делегата во время выполнения?
e. г. представьте, у вас есть опкоды в перечислении называется MyOperation1 и MyOperation2 и вы определили делегат, как:
public delegate void PDUEventHandler(ParamType Param, [...]);
и я хочу, чтобы определить события, называемые:
public event PDUEventHandler MyOperation1;
public event PDUEventHandler MyOperation2;
Но если я добавить новый код операции для этого мне понадобится событие.
Могут ли эти события быть созданы динамически или мне нужно сделать это вручную? Если мне нужно сделать это вручную, я думаю, что одно событие было бы лучше и обрабатывало бы сторону приложения.
Я думаю, вам стоит пойти с вариантом A и использовать шаблон, например Chain of Responsibility (http://www.dofactory.com/Patterns/PatternChain.aspx), чтобы обрабатывать события, возможно, используя MEF (http: // msdn .microsoft.com/en-us/library/dd460648.aspx) для загрузки объектов, которые будут обрабатывать каждый вид кодов операций. – Fabio
Интересная структура - не знает об этом - придется смотреть в него - хотя и имеет 1 класс каждого обработчика (в моем случае эксплуатации) кажется излишним - будет слишком глубже в том, что - спасибо – 537mfb