2011-09-28 106 views
1

我是新来的动态关键字,并一直在研究它,因为我想用它来解析xml。我碰到这个例子中,我用我的考验是:http://blogs.captechconsulting.com/blog/kevin-hazzard/fluent-xml-parsing-using-cs-dynamic-type-part-1c#动态设置动态表达式?

在这个例子中,他们表现出:dx.book[2].authors.author[0].name.last.Value,我想知道是否有可能以某种方式建立从字符串或数据库值的动态表情?

伪例如:

dynamic dx = new DynamicXml(xml); 
Console.WriteLine("dx.book[2].authors.author[0].name.last.Value"); 

我看着一个EVAL做这样的事情,或寻找到反射莫名其妙,但好奇,如果有一个更好的办法。任何建议或帮助,或一个简单的不会不胜感激。

+0

您是否试图以字符串形式执行代码?换句话说,像JavaScript eval()方法那样的代码 - 数据方法? –

+0

@Sean Thoman:不是我有我的动态对象创建(编译,并在运行时执行),我只是想能够在我的动态对象在运行时使用不同的动态表达式。我会发现这对xml非常有用,所以我可以有任何XML模式,并能够用相同的代码解析它。最后,如果这是可行的,那么我会通过pa将xml值发送到另一个类以供进一步处理。如果这是有道理的话,我对这个概念的术语是模糊的。 –

+0

我认为像XPath这样的东西会更适合你想要完成的事情。它是一种XML查询语言,您可以使用XPath表达式字符串来选择任意XML结构中的节点。 – Stefan

回答

1

InvokeGetChain接收一串属性并动态调用它们。它更像是一种反射风格的方式(尽管它比反射更容易,更快,并且适用于动态对象。)

它在ImpromptuInterface开源项目中(通过nuget)。从v6.0开始,它解析索引器,在上面的确切格式中,不包括目标对象