public class Foo { private Bar FooBar {get;set;} private class Bar { private string Str {get;set;} public Bar() {Str = "some value";} } }
如果我有类似上面的内容并且我有一个Foo的引用,我怎么能用反射来获得价值Str out Foo的FooBar?我知道没有任何理由可以做这样的事情(或者很少的方式),但我认为必须有办法做到这一点,我无法弄清楚如何实现它.
解决方法
您可以将
GetProperty
method与NonPublic和Instance绑定标志一起使用.
假设你有一个Foo实例,f:
PropertyInfo prop = typeof(Foo).GetProperty("FooBar",BindingFlags.NonPublic | BindingFlags.Instance); MethodInfo getter = prop.Getgetmethod(nonPublic: true); object bar = getter.Invoke(f,null);
更新:
如果要访问Str属性,只需对检索到的bar对象执行相同的操作:
PropertyInfo strProperty = bar.GetType().GetProperty("Str",BindingFlags.NonPublic | BindingFlags.Instance); MethodInfo strGetter = strProperty.Getgetmethod(nonPublic: true); string val = (string)strGetter.Invoke(bar,null);
原文地址:https://www.jb51.cc/csharp/98356.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。