获取私人功能<t>会员反思</t>

时间:2010-12-21 17:06:35

标签: c# reflection

我有一个类,其中包含私有成员的定义:

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

我试图获取我放在它上面的属性。现在,我尝试使用相应的{{1} Type.GetMembers() Type.GetFields() Type.GetMethods BindingFlags)我无法得到那个成员。我怎样才能找回它?如果定义的类是 BindingFlags.NonPublic 类,可能会出现问题吗?

先谢谢你的答案。

2 个答案:

答案 0 :(得分:3)

尝试将此作为绑定标志:

BindingFlags.NonPublic | BindingFlags.Instance

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

通常,当您使用Type.GetField时,您需要设置:

  • BindingFlags.InstanceBindingFlags.Static

    中的一个(或两个)

  • BindingFlags.PublicBindingFlags.NonPublic中的一个(或两个)。

|运算符使用二进制或运算组合标志,这意味着两个标志都已设置。

答案 1 :(得分:1)

typeof(YourType)
    .GetMember("MyFuncMember", BindingFlags.Instance | BindingFlags.NonPublic)
    .GetCustomAttributes(true);