[英]Enum and Dictionary<Enum, Action>
我希望我能以一种对每个人都清楚的方式来解释我的问题。 我们需要您对此提出建议。
我们有一个枚举类型,其中定义了超过 15 个常量。 我们收到来自 web 服务的报告,并将其一列转换为该枚举类型。 根据我们从 web 服务收到的信息,我们使用 Dictionary 运行特定功能
我为什么要征求意见? 假设这些 Enum contants 中有 3 个在我们的 Dictionary 中满足特定功能,但是 rest 使用相同的 function。那么,有没有办法以更好的方式将它们添加到我们的 Dictionary 中,而不是一个一个地添加它们? 我还想保留这个结构,因为到时候,我们可能会在未来为我描述为“其余部分”的功能提供特定功能。
为了更清楚,这里有一个我们正在尝试做的例子:
枚举:
public enum Reason{
ReasonA,
ReasonB,
ReasonC,
ReasonD,
ReasonE,
ReasonF,
ReasonG,
ReasonH,
ReasonI,
ReasonJ,
ReasonK
}
定义我们的字典:
public Dictionary<Reason, Action<CustomClassObj, string>> ReasonHandlers = new Dictionary<Reason, Action<CustomClassObj, string>>{
{ Reason.ReasonA, HandleReasonA },
{ Reason.ReasonB, HandleReasonB },
{ Reason.ReasonC, HandleReasonC },
{ Reason.ReasonD, HandleReasonGeneral },
{ Reason.ReasonE, HandleReasonGeneral },
{ Reason.ReasonF, HandleReasonGeneral },
{ Reason.ReasonG, HandleReasonGeneral },
{ Reason.ReasonH, HandleReasonGeneral },
{ Reason.ReasonI, HandleReasonGeneral },
{ Reason.ReasonJ, HandleReasonGeneral },
{ Reason.ReasonK, HandleReasonGeneral }
};
所以基本上我要问的是,有没有办法更智能地添加Reason, Function对? 因为正如您在 ReasonC 之后看到的那样,所有其他原因都使用相同的 function。
谢谢你的建议。
您可以尝试这样的事情,只将自定义 Reason 处理程序放入字典中,然后回退到 General 处理程序。
public Dictionary<Reason, Action<CustomClassObj, string>> ReasonHandlers = new Dictionary<Reason, Action<CustomClassObj, string>>{
{ Reason.ReasonA, HandleReasonA },
{ Reason.ReasonB, HandleReasonB },
{ Reason.ReasonC, HandleReasonC }};
public Action<CustomClassObj, string> ReasonHandlerLookup (Reason reason) {
Action<CustomClassObj, string> result = null;
ReasonHandlers.TryGetValue(reason, out result);
return result ?? HandleReasonGeneral;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.