2014-01-25 2 views
0

Для классов, которые производятся от EventArgs, насколько изменяемыми должны быть данные?Насколько переменным должен быть EventArg? C#

Я знаю, что может быть случай «зависит», но так как объект потенциально получать ходило много, это заставляет меня думать, что он должен быть неизменен, как можно:

public class MyEventArgs : EventArgs 
{ 
    public int Value { get; private set; } 

    public MyEventArgs(int value) 
    { 
     Value = value; 
    } 
} 
+1

Это зависит от случая использования - некоторые арги событий являются сократимыми поэтому они должны быть изменяемыми (например, сказать, что вы можете перемещаться, вы можете сделать вашу навигацию события арг сократимым). Сделайте свое собственное решение – Charleh

ответ

3

Иногда , члены вашего настраиваемого класса EventArgs используются для возврата информации обратно вызывающему событию (к объекту, который владеет/запускает событие).

В этом случае член должен быть доступен для редактирования.

Одним из ярких примеров являются http://msdn.microsoft.com/en-us/library/system.windows.forms.keyeventargs.handled(v=vs.110).aspx

+0

Huh, я собирался прокомментировать связь с производным классом, когда свойство определено на базе, но, на удивление, 'KeyEventArgs' * не * получается из [' HandledEventArgs'] (http: // msdn.microsoft.com/en-us/library/system.componentmodel.handledeventargs%28v=vs.110%29.aspx), который, вероятно, является чуть более широко используемой версией свойства 'Handled'. – hvd