2015-07-07 3 views
2

В чем проблема, когда декларирования событий с действиямиразница между действиями события и EventHandler событий <EventArgs>

public interface ISomething 
{ 
    event Action MyEventName; 
} 

или

public interface ISomething 
{ 
    event Action<bool> MyBoolEventName; 
} 

вместо другого варианта предыдущего кода декларирования события с EventHandler и EventArgs

public interface ISomething 
{ 
    event EventHandler<EventArgs> MyEventName; 
} 

или

public class EventArgsWithBool : EventArgs 
{ 
    private readonly bool someValue; 

    public EventArgsWithBool (bool someValue) 
    { 
     this.someValue = someValue; 
    } 

    public bool SomeValue 
    { 
     get { return this.someValue; } 
    } 
} 

public interface ISomething 
{ 
    event EventHandler<EventArgsWithBool> MyBoolEventName; 
} 

Мои мысли:

Обе версии работают хорошо для меня, и я думаю, что первый является более удобным для чтения/выглядит более прямой до точки. Но некоторые разработчики говорят, что лучше использовать второй синтаксис с EventArgs, не имея возможности дать хорошие технические причины (кроме того, что они знают второй синтаксис).

Есть ли какие-либо технические проблемы при первом использовании?

+0

http://stackoverflow.com/questions/1431359/event-action-vs-event-eventhandler –

ответ

1

Когда вы используете Action, вы не передаете объект Sender обработчику событий. Иногда полезно, чтобы обработчик события знал, какой объект вызвал событие.

+0

Я мог бы также использовать Action и установить его явно, но в этом случае вы правы. – Beachwalker

 Смежные вопросы

  • Нет связанных вопросов^_^