访问非公共成员 – ReflectionAttribute

我正在从程序集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

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

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