System.Reflections - CSharp 解释器

System.Reflections - CSharp Interpreteur

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

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

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

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

我怎样才能得到这个?

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

{methodType, methodName, variableType, variableName}

您需要使用BindingFlags:

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

您应该将 BindingFlags 传递给您的 GetMethods/GetFields 等调用。 读这个:link.