Как вызвать функцию модуля .Net из С#?

Этот код создает сборку. В сборке есть единственный статический метод под названием «Test2», который выводит «Вау!» в командную строку. Этот метод не находится в классе — это «глобальный метод» в модуле сборок.

     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# способ вызова таких глобальных методов без использования отражения?


person benjamin.popp    schedule 24.08.2014    source источник
comment
Не совсем. Прочитайте это blogs.msdn.com/b/ericlippert/archive/2009/06/22/   -  person Wiktor Zychla    schedule 24.08.2014