private static string GenerateType(AssemblyName name, ModuleBuilder moduleBuilder) { var typeName = name.Name + "." + MethodBaseExtensionsGetCallingConventionsTests.TypeName; var typeBuilder = moduleBuilder.DefineType( typeName, TypeAttributes.Class | TypeAttributes.Public, typeof(object)); typeBuilder.GenerateConstructor(); MethodBaseExtensionsGetCallingConventionsTests.GenerateMethods(typeBuilder); typeBuilder.CreateType(); return(typeName); }
static MethodBaseExtensionsGetCallingConventionsTests() { var name = new AssemblyName(); name.Name = MethodBaseExtensionsGetCallingConventionsTests.AssemblyName; name.Version = new Version(1, 0, 0, 0); var fileName = name.Name + ".dll"; var assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly( name, AssemblyBuilderAccess.Save); var moduleBuilder = assemblyBuilder.DefineDynamicModule(name.Name, fileName, false); var typeName = MethodBaseExtensionsGetCallingConventionsTests.GenerateType(name, moduleBuilder); assemblyBuilder.Save(fileName); AssemblyVerification.Verify(assemblyBuilder); MethodBaseExtensionsGetCallingConventionsTests.Type = assemblyBuilder.GetType(typeName); }
private static void GenerateMethods(TypeBuilder typeBuilder) { MethodBaseExtensionsGetCallingConventionsTests.GenerateVarArgMethod(typeBuilder); MethodBaseExtensionsGetCallingConventionsTests.GenerateExplicitThisMethod(typeBuilder); }