访问非公共成员 - ReflectionAttribute

时间:2009-04-20 18:55:55

标签: c# .net security

我正在从程序集A加载程序集B.我正在尝试枚举位于程序集B中的类型的私有成员。

如何使用ReflectionPermission完成此任务?我在MSDN上找不到任何有用的东西。

Assembly asm = Assembly.LoadFrom("Chapter13.exe", AppDomain.CurrentDomain.Evidence);
//AppDomain.CurrentDomain.Load("Chapter13");

Type t = asm.GetType("Chapter13.ProtectedBuffer");

MemberInfo[] members = t.GetMembers(BindingFlags.NonPublic);

foreach (MemberInfo m in members)
{
    Console.WriteLine(m.Name);
} 

亲切的问候 PK

1 个答案:

答案 0 :(得分:3)

除非您在部分信任环境中运行,否则您不需要ReflectionPermission。我怀疑你的问题是你没有指定静态/实例。试试这个:

MemberInfo[] members = t.GetMembers(BindingFlags.NonPublic | 
                                    BindingFlags.Static |
                                    BindingFlags.Instance);