Что если мы не используем наследование на мгновение?
1 - Предположим, вместо того, чтобы наследовать от общего базового класса, создайте свой клиентский класс, для которого требуется механизм событий, с объектом, реализующим механизм событий.
Предположим, наш класс
public class EventNotifier
{
public event EventHandler OnChange;
private bool _hasChanged;
public bool HasChanged
{
get { return _hasChanged; }
set
{
_hasChanged = value;
//only need to notify when we've changed.
if (value)
{
if (OnChange != null)
OnChange(this, EventArgs.Empty);
}
}
}
}
2-
public class A
{
private EventNotifier eventNotifier;
public EventNotifier MyEventNotifier { get { return eventNotifier; } }
public A()
{
eventNotifier = new EventNotifier();
}
}
3. Теперь ваши пользователи класса A (класс, который наследуется / составляется из класса A)
это для, если B содержит A
public class b
{
A obj ;
public b()
{
obj = new A();
obj.MyEventNotifier.OnChange += new EventHandler(delegate { Console.WriteLine("Hi"); });
obj. MyEventNotifier.HasChanged = true;
}
}