private Type CreateType(ModuleBuilder moduleBuilder, EntityElement entityElement) { var typeName = entityElement.ResolveFullName(); var typeBuilder = moduleBuilder.DefineType(typeName, TypeAttributes.Public); foreach (var propertyElement in entityElement.Properties) { var propertyName = propertyElement.ResolveName(); var propertyType = ResolveType(moduleBuilder, propertyElement); typeBuilder.DefineProperty(propertyName, propertyType); } foreach (var relationElement in entityElement.Relations) { var relationTarget = relationElement.Target; var relationCardinality = relationElement.Cardinality; var propertyName = relationElement.ResolveName(); var propertyType = CreateRelationType(BuildType(moduleBuilder, relationTarget), relationCardinality); typeBuilder.DefineProperty(propertyName, propertyType); } return(typeBuilder.CreateType()); }
private Type CreateType(ModuleBuilder moduleBuilder, EntityElement entityElement) { var typeName = entityElement.ResolveFullName(); var typeBuilder = moduleBuilder.DefineType(typeName, TypeAttributes.Public); foreach (var propertyElement in entityElement.Properties) { var propertyName = propertyElement.ResolveName(); var propertyType = ResolveType(moduleBuilder, propertyElement); typeBuilder.DefineProperty(propertyName, propertyType); } foreach (var relationElement in entityElement.Relations) { var relationTarget = relationElement.Target; var relationCardinality = relationElement.Cardinality; var propertyName = relationElement.ResolveName(); var propertyType = CreateRelationType(BuildType(moduleBuilder, relationTarget), relationCardinality); typeBuilder.DefineProperty(propertyName, propertyType); } return typeBuilder.CreateType(); }