如何通过反射获得一些参数(或属性,如果它们被称为)?
MyObject x = new MyObject(...);
..........
var propInfo = x.GetType().GetProperty("something");
if (propInfo != null) {
xyz= propInfo.GetValue(x,null).Metrics.Width //<------ gives error
}
答案 0 :(得分:0)
GetValue
返回object
。
你需要在调用其他成员之前强制转换它。
MyObject x = new MyObject(...);
//..........
var propInfo = x.GetType().GetProperty("something");
if (propInfo != null) {
MyPropertyType xyz = (MyPropertyType)propInfo.GetValue(x,null);
if(xyz != null) {
double width = xyz.Metrics.Width;
}
}
否则,您将继续使用dynamic
对象。
MyObject x = new MyObject(...);
//..........
var propInfo = x.GetType().GetProperty("something");
if (propInfo != null) {
dynamic xyz = propInfo.GetValue(x,null);
if(xyz != null) {
double width = xyz.Metrics.Width;
}
}