Я пытаюсь поднять события в моем абстрактном классе и моем производном классе и заставить их выйти на одно и то же событие в основном. Это возможно? С приведенным ниже кодом я установил точку останова в двух событиях повышения, и я вижу, что повышение бара, но никогда foo и фактическое событие в main никогда не вызываются из-за того, что OnDataReceived имеет значение null. Что я делаю не так? Если я попытаюсь сделать абстрактную абстракцию бара и функцию Raise Function виртуальной в баре и переопределить оба в моих производных классах, тогда я получаю сообщение об ошибке, когда OnDataReceived в баре не остается слева от + = или - =.абстрактное событие класса C#
Вот в основном то, что у меня есть:
public abstract class bar
{
public event DataReceivedHandler OnDataReceived;
protected void RaiseDataReceivedEvent(EventArgs e)
{
if (OnDataReceived != null)
OnDataReceived(this, e);
}
/// <summary>
/// A global event that will happen for all "bar" derived classes
/// </summary>
private void globalEvent()
{
//Raise this event for the derived class here.
RaiseDataReceivedEvent(new EventArgs());
}
}
public class foo : bar
{
public foo()
{
}
/// <summary>
/// A specific event that will happen only for this derived class
/// </summary>
private void fooSpecificEvent()
{
//Raise this event for the derived class here
RaiseDataReceivedEvent(new EventArgs());
}
}
public class Main
{
bar specificProduct = new foo();
public Main()
{
specificProduct.OnDataReceived += specificProduct_OnDataReceived;
}
void specificProduct_OnDataReceived(object sender, IttsDataReceivedEventArgs e)
{
//Here I want to process events from both fooSpecificEvent and globalEvent calls to RaiseDataReceivedEvent
}
}
Абстрактный класс содержит глобальные методы, которые будут использовать все производные классы/call. Тем не менее, я хочу, чтобы абстрактный класс манипулировал данными для глобальных методов. Событие DataReceived используется для уведомления классов потребителей при наличии новых данных. Однако, когда я нарушаю метод Raise, OnDataReceived всегда имеет значение null. – Jeremy
Когда методы 'globalEvent' & 'fooSpecificEvent' вызываются? –
Можете ли вы опубликовать простую «главную» программу, которая демонстрирует проблему? –