c# – 使用反射获取私有财产的私有财产
发布时间:2020-12-15 18:23:05 所属栏目:百科 来源:网络整理
导读: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?我知道没有任
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); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |