26 [SecuritySafeCritical]
27 internal static DynamicMethod Create(
string name,
Type owner,
bool nonPublic,
Type returnType,
Type[] paramTypes)
30 throw new NotImplementedException();
33 return CreateFramework(name, owner, nonPublic, returnType, paramTypes);
35 return CreateCore(name, owner, nonPublic, returnType, paramTypes);
43 static readonly Lazy<Module> dynamicModule =
new Lazy<Module>(CreateDynamicModule,
true);
49 static Module CreateDynamicModule()
51 var name = RuntimeUtil.IsMono ?
"__DynamicMethodModule" :
"__<DynamicMethodModule>";
52 var dynamicAssembly = AppDomain.CurrentDomain.DefineDynamicAssembly(
new AssemblyName(name), AssemblyBuilderAccess.RunAndCollect);
53 return dynamicAssembly.DefineDynamicModule(name);
65 static DynamicMethod CreateFramework(
string name,
Type owner,
bool nonPublic,
Type returnType,
Type[] paramTypes)
69 return new DynamicMethod(name, MethodAttributes.Public | MethodAttributes.Static, CallingConventions.Standard, returnType, paramTypes, dynamicModule.Value,
true);
71 catch (SecurityException)
73 return new DynamicMethod(name, returnType, paramTypes, nonPublic);
88 static DynamicMethod CreateCore(
string name,
Type owner,
bool nonPublic,
Type returnType,
Type[] paramTypes)
91 return new DynamicMethod(name, returnType, paramTypes, owner);
93 return new DynamicMethod(name, MethodAttributes.Public | MethodAttributes.Static, CallingConventions.Standard, returnType, paramTypes, owner.Module,
true);