我有一个UGLY逻辑树,我正在寻找替换从表生成的一些代码的方法。它基于以下几点分支:
List<AbstractType>
enum
我的基本想法是从输入表构建某种决策树。对于列表长度和标志很容易(switch
),但类型位怎么样?
This question表明多态性是一个好主意,但是在我的情况下,这会将问题和代码混合到四个风中(并且无论如何都不会将它自己生成)。另一个建议的解决方案(IDictionary<Type, DelegateType>
)可能会起作用,但看起来有点难看。
有没有人有任何建议。
答案 0 :(得分:1)
一种方法是连接类型名称(例如用冒号分隔),然后按字符串切换,例如
switch(colon_separated_typenames(list)) {
case "int:int": //foo
case "double:String:double": //bar
}