Пример #1
0
        /// <summary>
        /// Generate XSD schema info for entity types.
        /// One complexType is registered for each type, which contains the fields and relationships of that type.
        /// One group is registered for each type, which contains the type itself, and all derived types that may be used in its place.
        /// </summary>
        private void AddTypes()
        {
            var types = EffectiveTypes(_schemaManager.GetInstancesOfType(A(Aliases.Type)));

            foreach (EffectiveType entityType in types)
            {
                // Ensure all types inherit something
                if (!_schemaManager.GetAncestors(entityType.Type).Skip(1).Any())
                {
                    if (entityType.Alias != Aliases2.Resource)
                    {
                        throw new BuildException(string.Format("{0} does not inherit from anything.", entityType.Alias), entityType.Alias);
                    }
                }

                // Generate XSD
                XmlSchema xsd = GetSchema(entityType.Alias.Namespace);

                AddTypeElement(entityType, xsd);
                AddTypeMembers(entityType, xsd);
                AddTypeDescendents(entityType, xsd);
            }
        }
Пример #2
0
        /// <summary>
        ///     Gets the fields with defaults.
        /// </summary>
        /// <param name="type">The type.</param>
        /// <returns></returns>
        private IEnumerable <FieldData> GetFieldsWithDefaults(Entity type)
        {
            List <FieldData> result;

            if (!_defaultsOnType.TryGetValue(type, out result))
            {
                Alias defaultValueAlias = Aliases.CoreAlias("defaultValue");

                result =
                    (from ancType in SchemaResolver.GetAncestors(type)
                     from field in SchemaResolver.GetDeclaredFields(ancType)
                     let defaultValue = SchemaResolver.GetStringFieldValue(field, defaultValueAlias)
                                        where defaultValue != null
                                        select new FieldData
                {
                    Field = field,
                    Value = defaultValue
                }).ToList( );

                _defaultsOnType[type] = result;
            }
            return(result);
        }