我有一个定义私有(private)成员的类,如下所示:

[MyCustomAttribute]
private Func<String, String> MyFuncMember = (val) => val + " World! ";

我正在尝试获取我放在它上面的属性。现在,我已尝试使用 Type.GetMembers() Type.GetFields() Type.GetMethods 以及适当的 BindingFlags ( BindingFlags.NonPublic ),但我无法获得该成员。我怎样才能找回它?如果定义的类是 sealed 类,会不会有问题?

预先感谢您的回答。

最佳答案

尝试使用它作为您的绑定(bind)标志:

BindingFlags.NonPublic | BindingFlags.Instance

如果没有 BindingFlags.Instance 标志,它将无法找到您的实例字段。

一般来说,当您使用 Type.GetField 时,您需要设置:
  • BindingFlags.InstanceBindingFlags.Static 之一(或两者)

  • BindingFlags.PublicBindingFlags.NonPublic 之一(或两者)。
  • | 运算符使用二进制或操作组合标志,这意味着两个标志都已设置。

    关于c# - 使用反射获取私有(private) Func<T> 成员,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4501901/

    10-10 21:31