我正在创建一个规则验证类 - 没什么特别的。
我想设置这样的属性:
public int MaxLoanAmount { get; set; }
数据将像这样验证。 _app是指通过构造函数注入的数据。
bool MaxLoanAmountValid
{
get { return _app.LoanAmount >= MaxLoanAmount; }
}
我可以构造一些if逻辑来测试我的每个属性是否都已设置,验证它们并返回结果,但是我想尝试比这更聪明。
我想知道是否可以构建动态表达式,所以当设置MaxLoanAmount时,我添加“MaxLoanAmountValid”,依此类推“MaxLoanAmountValid AND MinLoanAmountValid”等。
提前致谢。
答案 0 :(得分:0)
是的,您可以使用.NET API动态构建Linq表达式树,也可以使用其中一种免费工具来简化作业。有些人可以将字符串解析为表达式,因此您所要做的就是构建字符串。请参阅答案中的链接以获得几乎相同的问题:Dynamically Build Linq Lambda Expression
如果你想更加“聪明”,你可以使用像MethodBase.GetCurrentMethod().Name
这样的反射动态获取其Set方法中的当前属性名称。