public void SaveTest() { var fileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "dynamicAssembly1.dll"); var assemblyBuilder = new DynamicAssemblyBuilder("dynamicAssembly1", fileName); assemblyBuilder.Save(); Assert.IsTrue(File.Exists(fileName)); }
public void SaveAllTest() { var assemblyBuilder = new DynamicAssemblyBuilder("dynamicAssembly1"); var type1 = assemblyBuilder.DefineType("class1"); var type2 = assemblyBuilder.DefineType("class2"); assemblyBuilder.Save(); Assert.AreEqual(2, assemblyBuilder.AssemblyBuilder.GetTypes().Length); }
public void TestAssemblyBuilder() { var assemblyBuilder = new DynamicAssemblyBuilder("DynamicAssembly1"); var interfaceBuilder = assemblyBuilder.DefineInterface("IInterface"); var typeBuilder = assemblyBuilder.DefineType("Class1"); var enumBuilder = assemblyBuilder.DefineEnum("Enum1"); var assembly = assemblyBuilder.Save(); Assert.AreEqual("Class1", typeBuilder.TypeBuilder.Name); Assert.AreEqual("DynamicAssembly1", assembly.GetExportedTypes().Length); }
public void TestSaveAll() { var assemblyBuilder = new DynamicAssemblyBuilder("dynamicAssembly1"); var type1 = assemblyBuilder.DefineType("class1"); var type2 = assemblyBuilder.DefineType("class2"); #if NETAPPCORE assemblyBuilder.Save(); #endif Assert.AreEqual(2, assemblyBuilder.AssemblyBuilder.GetTypes().Length); }
public void TestBuild() { #if !NETCOREAPP2_0 var assBuilder = new DynamicAssemblyBuilder("test_dll", "e:\\test.dll"); var typeBuilder = new EntityTypeBuilder("TestEntity", assBuilder); #else var typeBuilder = new EntityTypeBuilder("testclass"); #endif var pName = new GeneralProperty() { Name = "Name", Info = new PropertyMapInfo { FieldName = "name" }, Type = typeof(string) }; typeBuilder.Properties.Add(pName); typeBuilder.Properties.Add(new GeneralProperty() { Name = "Age", Info = new PropertyMapInfo { FieldName = "age" }, Type = typeof(int?) }); typeBuilder.Properties.Add(new GeneralProperty() { Name = "Sex", Info = new PropertyMapInfo { FieldName = "sex" }, Type = typeof(Sex) }); typeBuilder.DefineValidateRule(pName, () => new System.ComponentModel.DataAnnotations.MaxLengthAttribute(15)); var type = typeBuilder.Create(); #if !NETCOREAPP2_0 assBuilder.Save(); #endif var e = type.New <IEntity>(); e.SetValue("Name", "fireasy"); e.SetValue("Age", 12); e.SetValue("Sex", Sex.M); Assert.AreEqual(e.GetValue("Name"), "fireasy"); Assert.AreEqual(e.GetValue("Age"), 12); Assert.AreEqual(e.GetValue("Sex"), Sex.M); ValidationUnity.Validate(e); var property = PropertyUnity.GetProperty(type, "Name"); Assert.IsNotNull(property); Assert.AreEqual(type.GetProperty("Name").GetValue(e), "fireasy"); }
private static Type BuildProfileProxyType(Type profileType, List <string> assemblyList) { var fileName = Util.GenerateTempFileName(); assemblyList.Add(fileName); var assemblyBuilder = new DynamicAssemblyBuilder("__Profile_Proxy", fileName); var typeBuilder = assemblyBuilder.DefineType("Profile", baseType: typeof(MarshalByRefObject)); //定义Table代理类的属性 foreach (var property in profileType.GetProperties(BindingFlags.Public | BindingFlags.Instance)) { typeBuilder.DefineProperty(property.Name, property.PropertyType).DefineGetSetMethods(); } assemblyBuilder.Save(); return(typeBuilder.UnderlyingSystemType); }
private static ProxyType BuildSchemaProxyType(List <string> assemblyList) { var proxyType = new ProxyType(); var fileName = Util.GenerateTempFileName(); assemblyList.Add(fileName); var assemblyBuilder = new DynamicAssemblyBuilder("__Schema_Proxy", fileName); var tableTypeBuilder = assemblyBuilder.DefineType("Table", baseType: typeof(MarshalByRefObject)); var columnTypeBuilder = assemblyBuilder.DefineType("Column", baseType: typeof(MarshalByRefObject)); var referenceTypeBuilder = assemblyBuilder.DefineType("Reference", baseType: typeof(MarshalByRefObject)); tableTypeBuilder.ImplementInterface(typeof(_IIdentity)); columnTypeBuilder.ImplementInterface(typeof(_IIdentity)); referenceTypeBuilder.ImplementInterface(typeof(_IIdentity)); proxyType.TableType = tableTypeBuilder.UnderlyingSystemType; proxyType.ColumnType = columnTypeBuilder.UnderlyingSystemType; proxyType.ReferenceType = referenceTypeBuilder.UnderlyingSystemType; //定义Table代理类的属性 foreach (var property in SchemaExtensionManager.GetWrapType <Table>().GetProperties(BindingFlags.Public | BindingFlags.Instance)) { var propertyType = Replace(property.PropertyType, proxyType); tableTypeBuilder.DefineProperty(property.Name, propertyType).DefineGetSetMethods(); } //定义Table代理类的属性 foreach (var property in SchemaExtensionManager.GetWrapType <Column>().GetProperties(BindingFlags.Public | BindingFlags.Instance)) { var propertyType = Replace(property.PropertyType, proxyType); columnTypeBuilder.DefineProperty(property.Name, propertyType).DefineGetSetMethods(); } //定义Table代理类的属性 foreach (var property in SchemaExtensionManager.GetWrapType <Reference>().GetProperties(BindingFlags.Public | BindingFlags.Instance)) { var propertyType = Replace(property.PropertyType, proxyType); referenceTypeBuilder.DefineProperty(property.Name, propertyType).DefineGetSetMethods(); } assemblyBuilder.Save(); return(proxyType); }