2009-08-15 67 views
0

我有一個UGLY邏輯樹,我正在尋找方法替換從表生成的一些代碼。基於幾個東西它的分支:在c中的邏輯樹中的混合類型#

  • 一個List<AbstractType>
  • 實際類型的列表長度
  • 一個標誌enum

我的基本想法是建立某種形式的決策樹從輸入表。對於列表長度和標誌很容易(一個switch),但類型位呢?

This question表明多態是一個好主意,但是這會在我的情況下將關注點和散佈代碼混合到四個方面(並且不會將自己放到代中)。另一個建議的解決方案(IDictionary<Type, DelegateType>)可能有效,但看起來有點難看。

有沒有人有任何建議。

+0

如果你可以發佈它現在看起來如何,它會有所幫助。 – 2009-08-15 18:49:49

+0

想想你在The Daily WTF上看到的東西和你剛剛嘗試並避免使用的東西之間的邏輯樹,這是正確的。我正在尋找一些通用的解決方案,所以如果你想要更多的東西,你會回答一個不同的問題。 – BCS 2009-08-15 19:19:16

回答

1

一種方法是連接類型名稱(例如用冒號分隔),然後按字符串切換,

switch(colon_separated_typenames(list)) { 
    case "int:int": //foo 
    case "double:String:double": //bar 
} 
+0

不錯,乾淨的+1,但建立串和(可疑)開關有點慢。事前多做點努力,我想我可以不用任何分配。 – BCS 2009-08-15 19:21:52