我想获得动态对象的动态属性的值.这是我的代码..
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();
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 31
我的猜测是,它既不是公共财产,也不是你的名字错了,或者根本不是财产(只是公共领域).
如果不知道实际类型是什么,就不可能多说,但这应该是一个开始.
你提到这是一个"动态对象",但这并不是非常具有描述性.请记住,CLR本身对DLR一无所知 - 如果您的意思是这是一种实现IDynamicMetaObjectProvider或扩展的类型DynamicObject,那么您将无法像这样获得具有"正常"反射的属性.
在我的情况下ob没有正确的pr getter setter.
//causes GetProperty to return null
public class MyClass{
public object pr;
}
//Works
public class MyClass{
public object pr { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
如果您尝试访问的项目没有 getter 和 setter 访问器,那么它很可能是一个字段。
所以你的代码将按如下方式工作:
FieldInfo fieldInfo = type.GetField(fieldName);
Run Code Online (Sandbox Code Playgroud)
小智 5
就我而言,我必须定义 get 和 set。见上面的帖子
public string MyPropertyName { get; set; }
Run Code Online (Sandbox Code Playgroud)
在此之后,我可以通过以下方式获得该物业:
typeof(MyClassItem).GetProperty("PropertyName")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17869 次 |
| 最近记录: |