3
有什麼辦法可以使用LINQ動態查詢庫(System.Linq.Dynamic)來評估一個基於ExpandoObject屬性的條件嗎?下面的代碼拋出的「var e...
」行例外,他說「沒有屬性或字段‘重’型ExpandoObject存在」: -動態LINQ查詢ExpandoObject?
const string TestCondition = "MyStateBag.Foo >= 50 && MyStateBag.Bar >= 100";
dynamic myStateBag = new ExpandoObject();
myStateBag.Foo = 70;
myStateBag.Bar = 100;
var p = Expression.Parameter(typeof(ExpandoObject), "MyStateBag");
var e = DynamicExpression.ParseLambda(new[] { p }, null, TestCondition);
var result = e.Compile().DynamicInvoke(myStateBag);
Assert.IsTrue(result);
另一種方法是實施「StateBag的」作爲一本字典,但是這會導致稍微更冗長的條件字符串,例如MyStateBag["Foo"] >= 50 && MyStateBag["Bar"] >= 100
。由於這將被用作用戶腳本環境的基礎,如果可以實現,我寧願使用更簡單的ExpandoObject語法。
這就是我所懷疑的,無論如何。我可能會考慮NCalc作爲替代方案... –