当前位置:首页 > Windows程序 > 正文

BindingFlags.InvokeMethod

2024-03-31 Windows程序

1 用.NET供给的类动态编译代码字符串,,生成DLL存于内存中,加载到措施域

2 用反射的方法挪用这个DLL

将要被编译和执行的代码读入并以字符串方法生存
声明CSharpCodeProvider东西实例
挪用CSharpCodeProvider实例的CompileAssemblyFromSource要领编译
用反射生成被生成东西的实例(Assembly.CreateInstance)
挪用其要领

https://blog.csdn.net/clb929/article/details/51385399

应用:

1 获取编码字符串

   string strSourceCode = System.IO.File.ReadAllText("./TextFile1.txt");

2 创建代码生成/编译器访谒实例

   CSharpCodeProvider objCSharpCodePrivoder = new CSharpCodeProvider();

  CompilerParameters objCompilerParameters = new CompilerParameters();

  //措施集的引用(措施集路径)
  objCompilerParameters.ReferencedAssemblies.Add("System.dll");

  //是否需要将生成的文件(dll)放入内存

  objCompilerParameters.GenerateInMemory = true;
  CompilerResults cr = objCSharpCodePrivoder.CompileAssemblyFromSource(objCompilerParameters, strSourceCode);

3 通过反射挪用适才加载到内存的库,挪用其要领

  Assembly objAssembly = cr.CompiledAssembly;

  //定名空间.类名称
  object objClass = objAssembly.CreateInstance("DyTest.Class1");

  object[] objCodeParms = new object[1];
  objCodeParms[0] = "Allan.";

  //挪用要领

  string strResult = (string)objClass.GetType().InvokeMember("Go", BindingFlags.InvokeMethod, null, objClass, objCodeParms);

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/34003.html

Jm-杰米博客Jamie
草根站长的技术交流乐园!IT不会不要紧快来好好学习吧!
  • 20786文章总数
  • 7494587访问次数
  • 建站天数
  • 友情链接