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

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

鉴于这门课

class Foo{
    // Want to find _bar with reflection
    [SomeAttribute]
    private string _bar;

    public string BigBar
    {
        get { return this._bar; }
    }}

我希望找到使用属性标记的私有Item_bar。这有可能吗?

我在属性中查找了属性,但从未找到私有成员字段。

我需要设置哪些绑定标志才能获得私有字段?


Smart猫小萌
浏览 402回答 3
3回答

元芳怎么了

使用BindingFlags.NonPublic和BindingFlags.Instance旗子FieldInfo[] fields = myType.GetFields(                          BindingFlags.NonPublic |                           BindingFlags.Instance);

牛魔王的故事

您可以这样做,就像使用属性一样:FieldInfo fi = typeof(Foo).GetField("_bar", BindingFlags.NonPublic | BindingFlags.Instance);if (fi.GetCustomAttributes(typeof(SomeAttribute)) != null)     ...

米脂

使用反射获取私有变量的值: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的非空实例。
打开App,查看更多内容
随时随地看视频慕课网APP