Я пузырящиеся события в моем приложении и поэтому, используя метод событий пузыря. Поскольку этот метод обрабатывает всевозможные пузырьковые события, их переключатель или оператор if внутри него определяют, с каким событием мы имеем дело. Мне было интересно, могу ли я обойти это, создав разные версии класса args. Поэтому позвольте мне объяснить, что у меня есть два типа событий, которые обрабатываются по-разному, как X и Y, я создаю новые классы аргументов событий для этих двух событий, поскольку они хранят различные типы информации.Кастинг и типы Вопрос
public class EventsArgsX : EventsArgs
public class EventsArgsY : EventsArgs
тогда, когда я RaiseBubbleEvent где-то в моем приложении я могу передать любой из типов, основанных два события Arg, так ..
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 во время вызова. Однако мы не знаем его. Итак, как я могу вернуть его к фактическому типу, чтобы вызов метода работал?
Большое спасибо, надеюсь, что вы можете мне помочь с этим, его, кажется, очень легко, как может быть что-то отсутствует или что он просто не могу сделать
любые идеи ??
Я думаю, что пока не понял. Почему вы не можете написать два метода OnBubbleEvent? Вы можете переопределить переопределенный метод ?! – Thorsten79