我想要获取动态对象的动态属性的值。这是我的代码..
public string ReturnProperty(object ob, string prop)
{
Type type = ob.GetType();
PropertyInfo pr = type.GetProperty(prop);
//Here pr is null..Dont know whats wrong
return pr.GetValue(ob, null).ToString();
}发布于 2012-02-22 17:25:54
我的猜测是,要么它不是公共属性,要么你把名字弄错了,要么它根本不是一个属性(而是一个公共字段)。
在不知道实际类型的情况下不可能说更多,但这应该是一个开始。
您提到这是一个“动态对象”,但这并不是非常具有描述性。请记住,CLR本身对DLR一无所知-如果你的意思是这是一个实现IDynamicMetaObjectProvider或扩展DynamicObject的类型,那么你将无法获得像这样的“正常”反射的属性。
发布于 2016-01-20 19:34:13
在我的例子中,ob没有正确的pr getter setter。
//causes GetProperty to return null
public class MyClass{
public object pr;
}
//Works
public class MyClass{
public object pr { get; set; }
}发布于 2017-11-30 22:16:29
在我的例子中,我必须定义get和set。请参阅上面的帖子
public string MyPropertyName { get; set; }在此之后,我可以通过以下方式获取属性:
typeof(MyClassItem).GetProperty("PropertyName")https://stackoverflow.com/questions/9392027
复制相似问题