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.
我正在尝试制作一个读取代码(给定文件)并且必须解析它们的小应用程序。它可能无法编译,因为我提供的代码已经编译过了。 我需要的是我可以使用类似于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.