2015-01-01 2 views
0

У меня есть простое приложение, состоящее из консольного приложения и библиотеки классов. Библиотека классов выполняет весь тяжелый подъем в течение нескольких десятков классов. Некоторые из этих классов являются внутренними для библиотеки классов, и даже если они публичные, я бы предпочел не иметь консольное приложение, полностью осведомленное о них.архитектура для пузырящихся событий через иерархию классов

Так что я мог бы что-то вроде:

  1. класса My Program.cs, что работает.
  2. Класс DoSomething.cs, который вызывается программой Program.cs.
  3. My DoSomethingInParticular.cs класс, который вызывается DoSomething.cs
  4. И так далее, и так далее.

Есть ли общепринятый способ позволить Program.cs знать о более низких изменениях?

Функционально Я хотел бы, чтобы мое консольное приложение выписывало события нижнего уровня в окно консоли, в котором я пытаюсь это сделать.

+2

Если вы на самом деле хотите, чтобы ваши классы реализовать иерархию, вы лучше либо пропускание интерфейса (например, ILogger) к вашим функциям/классам) или с помощью МОК и запросить интерфейс для регистрации событий. –

+0

Хотя это общепринятое и рекомендуемое соглашение, нет правила, согласно которому каждый исходный файл C# должен содержать один класс с тем же именем, что и файл. Вы можете иметь несколько классов в одном исходном файле, а один класс можно распространять на несколько исходных файлов. Поэтому не совсем правильно говорить о «классе Program.cs» и «классе DoSomething.cs» и т. Д. – RenniePet

ответ

1

Модуль знает только столько, сколько он знает.

Я вижу 2.1 основные пути для вас.

1) Сделайте публичные мероприятия в DoSomething, которые программа может прослушать.
Сделать публичные мероприятия в DoSomethingInParticular, которые может выполнять DoSomething.
Когда DoSomething получает событие, он решает, подходит ли он для барботажа и преобразует его в одно собственное событие и повышает его для получения Программы.

1.1) Поместите несущие данные структуры/классы в события в другую, общую, lib. Затем, когда событие получено, DoSomething не нуждается в преобразовании, а только решает, пузырь его или нет.

2) Создайте собственную обработку событий, чтобы обрабатывать, кто что получает.

Не зная больше, я бы пошел с 1.1.

НТН

 Смежные вопросы

  • Нет связанных вопросов^_^