此代码生成一个程序集。程序集有一个静态方法,名为" 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#是否可以在不使用反射的情况下调用这样的全局方法?