是否可以将Enum元素作为事件参数传递?将枚举元素传递为事件参数C#
比方说,我有..
public class Letters
{
public delegate void StateChangedEventHandler(object sender, EventArgs e);
public event StateChangedEventHandler StateChanged;
public AbcState state = AbcState.Aaa;
public AbcState State
{
get{return this.state;}
set
{
this.state = value;
this.OnStateChanged();
}
}
public enum AbcState
{
Aaa,
Bbb,
Ccc
}
protected virtual void OnStateChanged()
{
StateChanged?.Invoke(this, State);
}
看我怎么我试图枚举的元素作为传递事件参数? 现在,我通常会创建一个类并扩展EventArgs,然后我将能够传递这个类本身。 我知道我可以在这里做同样的事情,创建一个扩展EventArgs的不同类,然后在类中创建枚举,字段和属性。然后将后者的一个实例放入我的类“Letters”(在上面的代码中使用)。
但是,是不是疯了?一定有更好的方法。请告诉我有一个更简单的方法。
顺便说一下,我不知道上面的代码是否会编译我只是直接在编辑器中编写它,因为我现在不在我的开发计算机上。
代码的复杂性是主观的。但是,为了标准化应用程序之间的对话,应遵守编码标准。如果您的应用程序不会被任何其他库使用,请停止阅读此处。标准事件委托签名是有原因的 - 即'EventHandlerMethod(object sender,EventArgs e)'。再一次,这是主观的,但是如果有可能这个图书馆会被另一个图书馆和另一个图书馆生成的事件被另一个图书馆使用,那么偏离这种做法是不好的做法。请参阅https://msdn.microsoft.com/en-us/library/ms182133.aspx – IAbstract