2009-08-15 12 views
0

私は、テーブルから生成されたコードで置き換えられる方法を見ているUGLY論理ツリーを持っています。また、いくつかの事に基づいて支店:論理ツリーの混在型C#

  • List<AbstractType>
  • の長さが私の基本的な考え方は、決定木のいくつかの種類を構築することである、リスト内の実際の型
  • フラグenum

入力テーブルから。リストの長さとフラグは簡単ですが(switch)、タイプビットはどうですか?

This questionは多形性が良い考えだと示唆していますが、それは懸念を混ぜて私の場合の4つの風にコードを混ぜるでしょう(そして、とにかく世代に自己を貸し付けません)。もう1つの提案された解決策(IDictionary<Type, DelegateType>)が動作するかもしれませんが、少し醜いようです。

誰にも提案はありますか?

+0

ここでどのように見えるかを投稿できれば助かります。 –

+0

The Daily WTFで見られるものと、試してみると作業を避けるものとの間の論理的なツリーを半分と考えてみましょう。私は幾分一般的な解決策を探しています。それ以上のことを望むなら、あなたは別の質問に答えています。 – BCS

答えて

1

1つの方法は、(たとえばコロンで区切られた)タイプ名を連結し、次に文字列(例えば、

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

素敵で清潔な+1ですが、文字列の建物と(疑わしい)スイッチは少し遅いです。少し前に努力すれば、割り切れずに逃げることができると思う。 – BCS