我希望我能以一種對每個人都清楚的方式解釋我的問題。 我們需要你的建議。Enum和Dictionary <Enum,Action>
我們有一個枚舉類型,它定義了15個以上的常量。 我們收到來自Web服務的報告並將其一列轉換爲此Enum類型。 基於我們從該網絡服務收到的信息,我們使用 運行特定功能字典
爲什麼我要求點子? 假設這些枚舉語言中的3個符合我們字典中的特定函數,但其餘的函數使用相同的函數。那麼,有沒有辦法以更好的方式將它們添加到我們的詞典中,而不是逐個添加它們?我也想保持這種結構,因爲當時間到了,我們將來可能會有特定的功能,我稱之爲「其餘」。
更清楚這裏就是我們正在努力做一個例子:
枚舉:
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 }
};
所以基本上我問什麼是,有沒有辦法添加原因,功能配對更智能?因爲您可以在ReasonC之後看到,所有其他原因使用相同的功能。
謝謝您的建議。
這需要一個'switch',除非你有一些動態的要求。 – leppie 2012-04-05 17:22:39
您是否在說可能會得到一組值,並且如果該集合包含ReasonD和ReasonE,那麼您只想運行HandleReasonGeneral一次? – phoog 2012-04-05 17:24:02
ReasonD和ReasonE我想調用相同的功能。但我想以有效的方式將該函數添加到字典中。 – selo 2012-04-05 17:27:31