2013-05-19 38 views
0

我正在创建一个规则验证类 - 没有什么奇特的。是否可以动态创建此linq语句?

我要设置属性是这样的:

public int MaxLoanAmount { get; set; } 

的数据将这样进行验证。 _app指的是通过构造函数注入的数据。

bool MaxLoanAmountValid 
{ 
    get { return _app.LoanAmount >= MaxLoanAmount; } 
} 

我可以构建一些逻辑,如果测试是否我的每个属性都设置,验证它们并返回结果,但我想尝试一点比这更聪明。

我不知道是否有可能建立一个动态的表达,所以当MaxLoanAmount设置,我添加了“MaxLoanAmountValid”,等“提前MaxLoanAmountValid和MinLoanAmountValid”等

感谢。

+0

显示在你将如何使用它的一些例子。下一个系统的一些单元测试将是完美的。你可以考虑使用[FLEE](http://flee.codeplex.com/)。例子包括:'context.CompileDynamic(“sqrt(a)+ pi”)' –

+0

看起来像是时间来获取System.Attribute和反射给我,或者@Ilya暗示了一组规则和一个等价的eval。一旦你有机制,然后看看在Linq中描述它。 –

回答

0

是的,您可以使用.NET API或几种免费工具之一来动态构建Linq表达式树,或者使工作更轻松。有些人可以将一个字符串解析成一个表达式,所以你所要做的就是构建字符串。请参阅几乎相同问题的答案中的链接:Dynamically Build Linq Lambda Expression

如果您希望更加“聪明”,则可以使用像这样的反射MethodBase.GetCurrentMethod().Name在其Set方法中动态获取当前属性名称。