public XmlSchemaType GetSchemaType(Type type) { SerializationMap map = KnownTypes.FindUserMap(type); if (map == null) { return(null); } return(map.GetSchemaType(Schemas, GeneratedTypes)); }
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(); }
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); }