将DynamicExpression.ParseLambda与相同类型的对象一起使用

时间:2019-05-14 00:35:11

标签: c# linq

我一直在使用它,并且似乎在扩展DynamicExpression包装器库的范围。

我最近的挑战是试图传递多个相同类型的对象以用于表达式。

var ValidLambdaExpression = "ObjectType.Attribute == \"testvalue\" && MyObjectType.Attribute == \"testvalue2\"";

var paramObjects = new List<System.Linq.Expressions.ParameterExpression>();
var p = System.Linq.Expressions.Expression.Parameter(typeof(ObjectType), "ObjectType");
paramObjects.Add(p);
p = System.Linq.Expressions.Expression.Parameter(typeof(ObjectType), "MyObjectType");
paramObjects.Add(p);

var lam = System.Linq.Dynamic.DynamicExpression.ParseLambda(paramObjects.ToArray(), null, ValidLambdaExpression);
var result = DataValidation.ToBoolean(lam.Compile().DynamicInvoke(data));

在这种情况下,如果两个参数的类型不同,则自定义参数列表将可以正常工作。但是我希望能够拥有同一对象的多个实例,而这些实例只是由表达式本身内部的不同变量引用。

我知道的另一种方法是在表达式内部使用@ 0,@ 1索引替换,而不是使用自定义变量名称。

有人知道如何完成我想做的事情吗?我已经倾倒了为图书馆编写的the tests,希望找到答案,但没有成功。

0 个答案:

没有答案