我正在尝试创建一个读取代码(给定文件)的小应用程序,并且必须解析它们。它可能无法编译,因为我提供的代码已经编译。 我需要的是,我可以使用与System.Reflections (FieldInfo, MethodInfo, ...)
类似的内容阅读所有代码信息。
我已尝试将该代码编译为DLL,然后使用:
((Assembly)assembly).GetExportedTypes()[x].GetMethods ();
((Assembly)assembly).GetExportedTypes()[x].GetFields ();
它做了很多工作,但我面临的问题是它给了我只公开声明 :(只有公共方法和公共字段) 我无法阅读较少的访问声明(私有,内部,受保护)。
我怎样才能获得这个?
附加信息:我只需要声明的名称和类型
{methodType, methodName, variableType, variableName}
答案 0 :(得分:2)
您需要使用BindingFlags
:
var flags = BindingFlags.Instance | BindingFlags.NonPublic;
((Assembly)assembly).GetExportedTypes()[x].GetMethods(flags);
答案 1 :(得分:0)
您应该将BindingFlags传递给GetMethods / GetFields等调用。 请阅读:link。