我想使用动态值作为参数。 E.g。
dynamic dyn = new ExpandoObject();
dyn.Foo = "bar";
var bar = new Interpreter().Eval("d.Foo", new Parameter("d", dyn));
Assert.AreEqual("bar", bar.ToString());
但是我收到一条错误说“在'ExpandoObject''类型中没有属性或字段'Foo'?”
这应该是可能的吗?
此致,Niels
答案 0 :(得分:1)
不幸的是,现在不支持动态(ExpandoObject)。我将在下一个版本中考虑此功能。
可能的解决方法是使用匿名对象:
dynamic dyn = new ExpandoObject();
dyn.Foo = "bar";
var bar = new Interpreter().Eval("d.Foo", new Parameter("d", new { Foo = dyn.Foo }));
考虑在这种情况下,在创建参数时会评估属性。
您还可以将动态转换为匿名类型(请参阅Cast ExpandoObject to anonymous type),但结果并没有太大差异。
免责声明:我是Dynamic Expresso库的创建者。
答案 1 :(得分:0)
Expression Evaluator支持动态(ExpandoObject)。它支持方法调用,属性和索引访问器,get和set。如果您确实遇到动态错误,请告诉我动态相对较新的支持。