System.Reflections - CSharp Interpreteur

时间:2015-04-22 13:59:13

标签: c# dll .net-assembly system.reflection

我正在尝试创建一个读取代码(给定文件)的小应用程序,并且必须解析它们。它可能无法编译,因为我提供的代码已经编译。 我需要的是,我可以使用与System.Reflections (FieldInfo, MethodInfo, ...)类似的内容阅读所有代码信息。

我已尝试将该代码编译为DLL,然后使用:

((Assembly)assembly).GetExportedTypes()[x].GetMethods ();
((Assembly)assembly).GetExportedTypes()[x].GetFields ();

它做了很多工作,但我面临的问题是它给了我只公开声明 :(只有公共方法和公共字段) 我无法阅读较少的访问声明(私有,内部,受保护)。

我怎样才能获得这个?

附加信息:我只需要声明的名称和类型

{methodType, methodName, variableType, variableName}

2 个答案:

答案 0 :(得分:2)

您需要使用BindingFlags

var flags = BindingFlags.Instance | BindingFlags.NonPublic;
((Assembly)assembly).GetExportedTypes()[x].GetMethods(flags);

答案 1 :(得分:0)

您应该将BindingFlags传递给GetMethods / GetFields等调用。 请阅读:link