我有一个类,其中包含私有成员的定义:
[MyCustomAttribute]
private Func<String, String> MyFuncMember = (val) => val + " World! ";
我试图获取我放在它上面的属性。现在,我尝试使用相应的{{1} Type.GetMembers()
, Type.GetFields()
和 Type.GetMethods
(BindingFlags
)我无法得到那个成员。我怎样才能找回它?如果定义的类是 BindingFlags.NonPublic
类,可能会出现问题吗?
先谢谢你的答案。
答案 0 :(得分:3)
尝试将此作为绑定标志:
BindingFlags.NonPublic | BindingFlags.Instance
如果没有BindingFlags.Instance
标记,它将无法找到您的实例字段。
通常,当您使用Type.GetField
时,您需要设置:
BindingFlags.Instance
和BindingFlags.Static
和强>
BindingFlags.Public
和BindingFlags.NonPublic
中的一个(或两个)。 |
运算符使用二进制或运算组合标志,这意味着两个标志都已设置。
答案 1 :(得分:1)
typeof(YourType)
.GetMember("MyFuncMember", BindingFlags.Instance | BindingFlags.NonPublic)
.GetCustomAttributes(true);