c#中逻辑树中的混合类型

时间:2009-08-15 18:22:46

标签: c# code-generation lookup-tables

我有一个UGLY逻辑树,我正在寻找替换从表生成的一些代码的方法。它基于以下几点分支:

  • List<AbstractType>
  • 的长度
  • 列表中的实际类型
  • 旗帜enum

我的基本想法是从输入表构建某种决策树。对于列表长度和标志很容易(switch),但类型位怎么样?

This question表明多态性是一个好主意,但是在我的情况下,这会将问题和代码混合到四个风中(并且无论如何都不会将它自己生成)。另一个建议的解决方案(IDictionary<Type, DelegateType>)可能会起作用,但看起来有点难看。

有没有人有任何建议。

1 个答案:

答案 0 :(得分:1)

一种方法是连接类型名称(例如用冒号分隔),然后按字符串切换,例如

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