private static string GenerateType(AssemblyName name, ModuleBuilder moduleBuilder) { var typeName = name.Name + "." + MethodBaseExtensionsGetAttributesTests.TypeName; var typeBuilder = moduleBuilder.DefineType( typeName, TypeAttributes.Class | TypeAttributes.Public, typeof(object)); typeBuilder.GenerateConstructor(); MethodBaseExtensionsGetAttributesTests.GenerateMethods(typeBuilder); typeBuilder.CreateType(); return(typeName); }
static MethodBaseExtensionsGetAttributesTests() { var name = new AssemblyName(); name.Name = MethodBaseExtensionsGetAttributesTests.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 = MethodBaseExtensionsGetAttributesTests.GenerateType(name, moduleBuilder); var typeAbstractName = MethodBaseExtensionsGetAttributesTests.GenerateAbstractType(name, moduleBuilder); assemblyBuilder.Save(fileName); AssemblyVerification.Verify(assemblyBuilder); MethodBaseExtensionsGetAttributesTests.AbstractType = assemblyBuilder.GetType(typeAbstractName); MethodBaseExtensionsGetAttributesTests.Type = assemblyBuilder.GetType(typeName); }
private static void GenerateMethods(TypeBuilder typeBuilder) { MethodBaseExtensionsGetAttributesTests.GeneratePrivateStaticMethod(typeBuilder); MethodBaseExtensionsGetAttributesTests.GeneratePublicInstanceHideBySigNewSlotVirtualMethod(typeBuilder); MethodBaseExtensionsGetAttributesTests.GeneratePublicInstanceHideBySigNewSlotFinalMethod(typeBuilder); }
private static void GenerateAbstractMethods(TypeBuilder typeBuilder) { MethodBaseExtensionsGetAttributesTests.GenerateFamilyInstanceHideBySigAbstractNewSlotVirtualMethod(typeBuilder); MethodBaseExtensionsGetAttributesTests.GenerateFamilyAndAssemblyInstanceHideBySigAbstractNewSlotVirtualMethod(typeBuilder); MethodBaseExtensionsGetAttributesTests.GenerateFamilyOrAssemblyInstanceHideBySigAbstractNewSlotVirtualMethod(typeBuilder); }