Eksportowanie schematów z klas
Aby wygenerować schematy języka definicji schematu XML (XSD) na podstawie klas używanych w modelu kontraktu XsdDataContractExporter danych, użyj klasy . W tym temacie opisano proces tworzenia schematów.
Proces eksportowania
Proces eksportowania schematu rozpoczyna się od co najmniej jednego typu i tworzy obiekt opisujący projekcję XmlSchemaSet XML tych typów.
Element XmlSchemaSet
jest częścią modelu obiektów schematu programu .NET Framework (SOM), który reprezentuje zestaw dokumentów schematu XSD. Aby utworzyć dokumenty XSD na podstawie XmlSchemaSet
klasy , użyj kolekcji schematów z Schemas właściwości XmlSchemaSet
klasy . Następnie serializuj każdy XmlSchema obiekt przy użyciu obiektu XmlSerializer.
Aby wyeksportować schematy
Utwórz wystąpienie elementu XsdDataContractExporter.
Opcjonalny. Przekaż element XmlSchemaSet w konstruktorze. W takim przypadku schemat wygenerowany podczas eksportowania schematu jest dodawany do tego XmlSchemaSet wystąpienia zamiast rozpoczynać się od pustego XmlSchemaSet.
Opcjonalny. Wywołaj CanExport jedną z metod. Metoda określa, czy można wyeksportować określony typ. Metoda ma te same przeciążenia co
Export
metoda w następnym kroku.Wywołaj Export jedną z metod. Istnieją trzy przeciążenia, które przyjmują Typeobiekt , List<T>
Type
lub List<T>Assembly obiekty. W ostatnim przypadku wszystkie typy we wszystkich zestawach są eksportowane.Wiele wywołań
Export
metody powoduje dodanie wielu elementów do tego samegoXmlSchemaSet
elementu . Typ nie jest generowany do elementuXmlSchemaSet
, jeśli już istnieje. W związku z tym wywoływanieExport
wielu razy w tej samej metodzieXsdDataContractExporter
jest preferowane do tworzenia wielu wystąpieńXsdDataContractExporter
klasy. Zapobiega to generowaniu zduplikowanych typów schematów.Uwaga
Jeśli podczas eksportowania wystąpi błąd,
XmlSchemaSet
element będzie w stanie nieprzewidywalnym.XmlSchemaSet Uzyskaj dostęp do właściwości za pośrednictwem Schemas właściwości .
Opcje eksportu
Właściwość klasy XsdDataContractExporter można ustawić Options na wystąpienie ExportOptions klasy, aby kontrolować różne aspekty procesu eksportu. W szczególności można ustawić następujące opcje:
KnownTypes. Ta kolekcja
Type
reprezentuje znane typy eksportowanych typów. (Aby uzyskać więcej informacji, zobacz Znane typy kontraktów danych). Te znane typy są eksportowane przy każdymExport
wywołaniu oprócz typów przekazywanych doExport
metody.DataContractSurrogate. Element IDataContractSurrogate można dostarczyć za pomocą tej właściwości, która dostosuje proces eksportowania. Aby uzyskać więcej informacji, zobacz Data Contract Surrogates (Zastępcze kontrakty danych). Domyślnie nie jest używany żaden zastępca.
Metody pomocnika
Oprócz głównej roli eksportowania schematu program XsdDataContractExporter
udostępnia kilka przydatnych metod pomocnika, które zawierają informacje o typach. Są to:
GetRootElementName Metoda. Ta metoda przyjmuje
Type
element i zwraca element XmlQualifiedName reprezentujący nazwę elementu głównego i przestrzeń nazw, która byłaby używana, gdyby ten typ został serializowany jako obiekt główny.GetSchemaTypeName Metoda. Ta metoda przyjmuje
Type
element i zwraca wartość XmlQualifiedName reprezentującą nazwę typu schematu XSD, który byłby używany, gdyby ten typ został wyeksportowany do schematu. W przypadku IXmlSerializable typów reprezentowanych jako typy anonimowe w schemacie ta metoda zwraca wartośćnull
.GetSchemaType Metoda. Ta metoda działa tylko z typami IXmlSerializable reprezentowanymi jako typy anonimowe w schemacie i zwraca
null
wszystkie inne typy. W przypadku typów anonimowych ta metoda zwraca element XmlSchemaType reprezentujący danąType
wartość .
Opcje eksportu mają wpływ na wszystkie te metody.