【发布时间】:2013-12-10 09:23:40
【问题描述】:
在一个方法中,我调用了一些 Web 服务来获取数据,如下所示:
public void SomeMethod()
{
var user = userWS.GetUsers();
var documents = documentWS.GetDocuments();
}
我还有一个 XML 文件,用户可以在其中指定要映射的属性。 XML 看起来像这样:
<root>
<item id="username" mapper="user.username.value" />
<item id="document1" mapper="documents.document1.value" />
</root>
所以我基本上想做的是执行mapper 属性内的字符串。所以我有这样的东西:
public void SomeMethod()
{
var user = userWS.GetUsers();
var documents = documentWS.GetDocuments();
// returns: "user.username.value"
string usernameProperty = GetMapperValueById ( "username" );
var value = Invoke(usernameProperty);
}
所以它应该就像我在我的代码中手动调用 var value = user.username.value; 一样。
但是我如何从string 调用此操作?
【问题讨论】:
-
我在this answer 中提供了适合您需求的
GetPropertyValue方法 -
我不确定这是否是我正在寻找的答案。这是关于我需要执行的方法内部的局部变量。我想我需要更多的
Eval功能。但不幸的是,这并不像我想象的那么容易 -
这就够了,我会用适当的例子来回答。
-
@Vivendi 执行动态代码的唯一方法是通过CodeDOM。但是,您可以使用反射来做到这一点 - 它不会像您希望的那样简单。
标签: c# reflection invoke