В моем приложении происходят пузырьковые события, поэтому я использую метод пузырьковых событий. Поскольку этот метод обрабатывает всевозможные всплывающие события, он является переключателем или оператором if внутри него, чтобы определить, с каким типом события мы имеем дело. Мне было интересно, смогу ли я обойти это, создав различные версии класса args события. Итак, позвольте мне объяснить, скажем, у меня есть два типа событий, которые обрабатываются по-разному, называемые X и Y, я создаю новые классы аргументов событий для этих двух событий, поскольку они хранят различные типы информации.
public class EventsArgsX : EventsArgs
public class EventsArgsY : EventsArgs
затем, когда я RaiseBubbleEvent откуда-то в моем приложении, я могу передать любой из двух типов, основанных на аргументах событий, поэтому ..
EventArgsX foox = new EventArgsX();
RaiseBubbleEvent(null,foox);
или
EventArgsY fooy = new EventArgsY();
RaiseBubbleEvent(null,fooy);
тогда метод OnBubbleEvent подхватывает это, чья подпись
переопределить OnBubbleEvent (источник объекта, EventArgs e)
Теперь я не могу перегрузить этот метод, так как он переопределен в первую очередь, так что я подумал, что мог бы сделать, чтобы у меня был другой метод с перегрузками, чтобы справиться с этим, поэтому
protected override OnBubbleEvent(object source, EventArgs e)
{
DoStuff(e);
}
private void DoStuff(EventArgsY args)
{}
private void DoStuff(EventArgsX args)
{}
но, конечно, проблема в том, что EventArgs e в методе OnBubbleEvent имеет тип EventArgs во время вызова. Однако мы знаем, что нет. Так как же мне вернуть его к фактическому типу, чтобы вызов метода работал?
Большое спасибо, надеюсь, вы можете помочь мне с этим, кажется, это действительно легко, как будто что-то упускает или что это просто невозможно сделать
есть идеи ??