예제 #1
0
        /// <summary>Adds a new complex type (without any properties).</summary>
        /// <param name="name">The name of the type.</param>
        /// <param name="instanceType">The instance type or null if this should be untyped resource.</param>
        /// <param name="baseType">The base type.</param>
        /// <param name="isAbstract">If the type should be abstract.</param>
        /// <returns>The newly created complex type.</returns>
        public IEdmComplexType AddComplexType(string name, Type instanceType, IEdmComplexType baseType, bool isAbstract, string nameSpace)
        {
            EdmComplexType complexType = new EdmComplexType(
                this.namespaceName,
                name,
                baseType,
                isAbstract);

            this.complexTypes.Add(complexType.FullName(), complexType);

            if (complexType.BaseType != null)
            {
                List <IEdmStructuredType> derivedTypes;
                if (!this.derivedTypeMappings.TryGetValue(complexType.BaseType, out derivedTypes))
                {
                    derivedTypes = new List <IEdmStructuredType>();
                    this.derivedTypeMappings[complexType.BaseType] = derivedTypes;
                }
            }

            return(complexType);
        }