2012-01-25 72 views
2
d.GetType().GetProperty("value2").GetValue(d, null); 

这将返回d中value2属性的值。从动态属性获取值

我想要value2内属性的值,即d.value2.value3。

我应该怎么做到这一点?

回答

6
object e = d.GetType().GetProperty("value2").GetValue(d, null); 
object f = e.GetType().GetProperty("value3").GetValue(e, null); 
3

在C#4,简单地使用dynamic关键字,让你的属性的运行时间评价:

((dynamic) d).value2.value3; 
+0

是从什么'd.value2.value3'区别,如果你知道'value2'和编译时的'value3'(当你写代码的时候)? –

+0

如果'd'是编译器已知的类型,在这种情况下使用'dynamic'将不会有多大用处:它只会延迟运行时的重载解析。 –

+0

假设'value2'字符串仅在运行时可用(从前一个xml文件中读取)。 –