Пример #1
0
        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());
        }
Пример #2
0
        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();
        }