我的事件类中有一个通用的事件引发方法,可用于所有事件
protected virtual void RaiseEvent<T>(EventHandler<T> eventToRaise, T eventArgs) where T : EventArgs
{
if (eventToRaise != null)
{
eventToRaise(this, eventArgs);
}
}
但是当我尝试从子类调用此方法时,我收到一个错误,即事件只能在 += 或 -= 表达式的左侧使用。有什么办法可以使这项工作?
更新:一个想法是使用枚举。首先定义一个事件名称的枚举。然后添加一个字典,将每个枚举值映射到其对应的事件。最后在方法中获取事件并根据参数是什么来引发它。但我不确定字典应该如何?
public enum Events {Insert , Update , Delete};
dictionary<Events,EventHandler<T>> EventsDic = new dictionary<Events,EventHandler<T>>;
EventsDic.Add(Events.Insert,this.Insert);
这个对吗 ?