Мне нужно получить доступ к свойствам x и y объекта obj (типа some ClassA) в методе обработки событий, подписанном на событие в объекте obj.
Option1: просто создайте это событие типа EventHandler, приведите отправителя.
void handlingMethod(object sender, EventArgs e)
{
ClassA ca = sender as ClassA;
Dosomething(ca.id, ca.x, ca.y);
}
RaiseEvent(this,null); //in ClassA
Option2:
Создайте SpecialEventHandler1, чтобы избежать приведения.
void handlingMethod(SpecialEventArgs e)
{
Dosomething(e.id, e.x,e.y);
}
RaiseSpecialEvent1(new SpecialEventArgs(this.id, this.x,this.y));//in ClassA
Вариант3:
Создайте SpecialEventHandler2, чтобы можно было избежать как приведения, так и создания нового объекта SpecialEventArgs.
void handlingMethod(ClassA sender)
{
Dosomething(sender.id, sender.x, sender.y);
}
RaiseSpecialEvent2(this); //in ClassA
Допустим, эти события происходят постоянно @ 50 / сек. Какой из них более эффективен? Это зависит от размера ClassA? Я предполагаю, что Option3 - лучший способ с точки зрения производительности. Пожалуйста, дайте ваши идеи.