为了账号安全,请及时绑定邮箱和手机立即绑定

找到一个有反射的私人领域?

找到一个有反射的私人领域?

Smart猫小萌 2019-07-17 14:55:18
找到一个有反射的私人领域?鉴于这门课class Foo{     // Want to find _bar with reflection     [SomeAttribute]     private string _bar;     public string BigBar     {         get { return this._bar; }     }}我希望找到使用属性标记的私有Item_bar。这有可能吗?我在属性中查找了属性,但从未找到私有成员字段。我需要设置哪些绑定标志才能获得私有字段?
查看完整描述

3 回答

?
元芳怎么了

TA贡献1798条经验 获得超7个赞

使用BindingFlags.NonPublicBindingFlags.Instance旗子

FieldInfo[] fields = myType.GetFields(
                         BindingFlags.NonPublic | 
                         BindingFlags.Instance);


查看完整回答
反对 回复 2019-07-17
?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

您可以这样做,就像使用属性一样:

FieldInfo fi = typeof(Foo).GetField("_bar", BindingFlags.NonPublic | BindingFlags.Instance);if (fi.GetCustomAttributes(typeof(SomeAttribute)) != null)
    ...


查看完整回答
反对 回复 2019-07-17
?
米脂

TA贡献1836条经验 获得超3个赞

使用反射获取私有变量的值:

var _barVariable = typeof(Foo).GetField("_bar", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(objectForFooClass);

使用反射为私有变量设置值:

typeof(Foo).GetField("_bar", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(objectForFoocClass, "newValue");

其中objectForFooClass是类型foo的非空实例。


查看完整回答
反对 回复 2019-07-17
  • 3 回答
  • 0 关注
  • 401 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信