Exemple #1
0
        public XmlSchemaType GetSchemaType(Type type)
        {
            SerializationMap map = KnownTypes.FindUserMap(type);

            if (map == null)
            {
                return(null);
            }

            return(map.GetSchemaType(Schemas, GeneratedTypes));
        }
Exemple #2
0
        public void Export(Type type)
        {
            //FIXME: Which types to exclude?
            KnownTypes.Add(type);
            SerializationMap map = KnownTypes.FindUserMap(type);

            if (map == null)
            {
                return;
            }

            map.GetSchemaType(Schemas, GeneratedTypes);
            Schemas.Compile();
        }
Exemple #3
0
        List <DataMemberInfo> GetMembers(Type type, QName qname, bool declared_only)
        {
            List <DataMemberInfo> data_members = new List <DataMemberInfo> ();
            BindingFlags          flags        = AllInstanceFlags;

            if (declared_only)
            {
                flags |= BindingFlags.DeclaredOnly;
            }

            foreach (PropertyInfo pi in type.GetProperties(flags))
            {
                DataMemberAttribute dma =
                    GetDataMemberAttribute(pi);
                if (dma == null)
                {
                    continue;
                }
                KnownTypes.Add(pi.PropertyType);
                var map = KnownTypes.FindUserMap(pi.PropertyType);
                if (!pi.CanRead || (!pi.CanWrite && !(map is ICollectionTypeMap)))
                {
                    throw new InvalidDataContractException(String.Format(
                                                               "DataMember property '{0}' on type '{1}' must have both getter and setter.", pi, pi.DeclaringType));
                }
                data_members.Add(CreateDataMemberInfo(dma, pi, pi.PropertyType, KnownTypeCollection.GetStaticQName(pi.DeclaringType).Namespace));
            }

            foreach (FieldInfo fi in type.GetFields(flags))
            {
                DataMemberAttribute dma =
                    GetDataMemberAttribute(fi);
                if (dma == null)
                {
                    continue;
                }
                data_members.Add(CreateDataMemberInfo(dma, fi, fi.FieldType, KnownTypeCollection.GetStaticQName(fi.DeclaringType).Namespace));
            }

            return(data_members);
        }