C#事件-根据字符串引发特定事件

我正在编写一个类来处理带有字符串值的单个事件中发生的事件,并将它们映射到并基于字符串值引发特定事件.

通过诸如以下的开关,一切都可以正常工作

SpecificHandler handler = null;
SpecificArgs args = new SpecificArgs(Id, Name);   
switch (IncomingEventName)
{ 
    case "EVENT1":
        handler = Event1Handler;
        break;
    case "EVENT2":
        handler = Event2Handler;
        break;
    ... etc
}
if (handler != null) handler(this, args);

但是开关列表可能会太长,所以我想一种方法将字符串事件映射到数据结构中的处理程序(例如KeyValuePair列表),这样我就可以找到字符串事件的项目并引发关联事件.

任何提示/想法最欢迎.

谢谢

解决方法:

您可以只使用字典.但是,请注意不要针对委托人,而要对他们进行懒惰的评估.因此,委托是不可变的,因此您将不会收到任何事件处理程序.

private static Dictionary<string, Func<Yourtype, SpecificHandler>> dict = ...
dict.Add("Foo", x => x.FooHappened);
dict.Add("Bar", x => x.BarHappened);

并像这样使用它:

Func<SpecificHandler> handlerFunc;
SpecificArgs args = new SpecificArgs(...);
if (dict.TryGetValue(IncomingEventName, out handlerFunc))
{
    SpecificHandler handler = handlerFunc(this);
    if (handler != null) handler(this, args);
}
上一篇:javascript-触发CSS变更的jQuery事件


下一篇:MySql创建事件错误