2010-09-15 49 views
1

我的产品负责人要求我配置一些比较逻辑,以便过程工程师可以在不更改代码的情况下更改内容。目前该代码是SELECT CASE声明,其中各种IF THEN声明都是相当标准的。我似乎无法找到解决方法的问题是他希望通过配置AND/ORIF THEN声明中进行可变数量的比较。他的想法是配置可以像工程师的有限查询生成器一样工作。我想出的唯一解决方案是在字符串中构建函数,并使用VBCodeProvider在运行时对其进行编译。有没有更好的方法来解决这个问题?如果在运行时声明那么构建?

+1

听起来像他正在寻找[域特定语言](http://en.wikipedia.org/wiki/Domain-specific_language)。 [This](http://www.microsoft.com/downloads/en/details.aspx?FamilyId=57A14CC6-C084-48DD-B401-1845013BF834&displaylang=en)SDK可能是感兴趣的。 – Oded 2010-09-15 20:18:09

回答

1

一种方法是将布尔值存储在您的配置文件中,在运行时加载它们,并像您其他布尔值一样在您的代码中使用它们。

更好的方法是让配置尽可能接近他的问题域,然后在代码中使用适当的布尔代码。

+0

大声笑在我自己。我知道我过分复杂了,而且我已经做了好几次。谢谢 – Loscas 2010-09-15 20:34:39

+1

不客气。我发现当你不在自己的中间时,更容易看到问题。 ;) – John 2010-09-15 20:52:48

1

您可以使用expressions来完成此操作。有了这个,你将能够建立一个IfExpression并建立它的条件。您将能够编译并在运行时运行它。