如何从C#调用.Net模块功能?

时间:2014-08-24 19:16:50

标签: c# .net reflection.emit

此代码生成一个程序集。程序集有一个静态方法,名为" Test2",输出" Wow!"到命令行。这种方法不属于同一类 - 它是一种全球性的方法"在装配模块上。

     var fileName = "output_name.dll";
     var assemblyName = "MyAssembly";
     var assembly = AppDomain.CurrentDomain.DefineDynamicAssembly(new AssemblyName(assemblyName), AssemblyBuilderAccess.Save);
     var module = assembly.DefineDynamicModule(assemblyName, fileName);
     var testMethod2 = module.DefineGlobalMethod("Test2", MethodAttributes.Public | MethodAttributes.Static, typeof(void), null);
     var generator2 = testMethod2.GetILGenerator();
     generator2.Emit(OpCodes.Ldstr, "Wow!");
     generator2.EmitCall(OpCodes.Call, typeof(Console).GetMethod("WriteLine", new Type[] { typeof(string) }), null);
     generator2.Emit(OpCodes.Ret);
     module.CreateGlobalFunctions();
     assembly.Save(fileName);

现在我有了这个方法,我想从C#引用程序集并调用该方法。但由于该方法不在类或命名空间中,我不确定如何执行此操作。

C#是否可以在不使用反射的情况下调用这样的全局方法?

0 个答案:

没有答案