日期:2014-05-18  浏览次数:21047 次

关于反射的无法获取属性值的问题,在线等待!!!!!
我通过反射想获取一个类的非public的属性值,   其中obj为我需要的类的一个实例。
 
      Type   objType   =obj.GetType();
                        MemberInfo       []       memberInfo=    
                                              objType.GetMembers   (BindingFlags.Instance|BindingFlags.GetProperty|BindingFlags.NonPublic);  

  这样我可以得到我想要的VisaualComponent的属性。但是,PropertyInfo   ptinfo   =   objType.GetProperty(“VisualComponent”,     BindingFlags.NonPublic);    

  却提示我返回为空值,我怎么得不到该属性呢。

    图片见   :http://one.fsphost.com/zyjl/CSDN/Snap1.jpg

    红线处的   ptinfo返回为空,但是可以进行到这一步,mbi已经获取到该属性。



------解决方案--------------------
帮顶
------解决方案--------------------
如果是属性的话,应该使用GetProperties,而不是GetMembers吧
------解决方案--------------------
不懂,学习中
------解决方案--------------------
这样试试看可以吗?


PropertyInfo ptinfo = objType.GetProperty(“VisualComponent”, BindingFlags.Instance|BindingFlags.GetProperty|BindingFlags.NonPublic);
------解决方案--------------------
试下
BindingFlags.Public | BindingFlags.Instance
------解决方案--------------------
这样就可以了:
PropertyInfo ptinfo = objType.GetProperty(“VisualComponent”, BindingFlags.NonPublic | BindingFlags.Instance);
------解决方案--------------------
“VisualComponent”这里的引号 "
------解决方案--------------------
应该是GetProperty吧
------解决方案--------------------
我这样可以取到值啊
PropertyInfo ptinfo = objType.GetProperty( "VisualComponent ",
BindingFlags.Instance | BindingFlags.GetProperty |
BindingFlags.NonPublic);
Console.WriteLine(ptinfo.GetValue(obj,null));
------解决方案--------------------
学习