Schema's exporteren uit klassen
Als u XSD-schema's (XML Schema Definition Language) wilt genereren op basis van klassen die worden gebruikt in het gegevenscontractmodel, gebruikt u de XsdDataContractExporter klasse. In dit onderwerp wordt het proces voor het maken van schema's beschreven.
Het exportproces
Het schema-exportproces begint met een of meer typen en produceert een XmlSchemaSet beschrijving van de XML-projectie van deze typen.
Het XmlSchemaSet
maakt deel uit van het SCHEMA Object Model (SOM) van .NET Framework dat een set XSD-schemadocumenten vertegenwoordigt. Als u XSD-documenten wilt maken op basis van een XmlSchemaSet
, gebruikt u de verzameling schema's van de Schemas eigenschap van de XmlSchemaSet
klasse. Serialiseer vervolgens elk XmlSchema object met behulp van de XmlSerializer.
Schema's exporteren
Maak een instantie van de XsdDataContractExporter.
Optioneel. Geef een XmlSchemaSet in de constructor door. In dit geval wordt het schema dat tijdens het exporteren van het schema wordt gegenereerd, toegevoegd aan dit XmlSchemaSet exemplaar in plaats van te beginnen met een lege XmlSchemaSet.
Optioneel. Roep een van de CanExport methoden aan. De methode bepaalt of het opgegeven type kan worden geëxporteerd. De methode heeft dezelfde overbelastingen als de
Export
methode in de volgende stap.Roep een van de Export methoden aan. Er zijn drie overbelastingen die een Type, een List<T> van
Type
objecten of een List<T> van Assembly objecten innemen. In het laatste geval worden alle typen in alle opgegeven assembly's geëxporteerd.Meerdere aanroepen naar de
Export
methode leiden ertoe dat er meerdere items aan hetzelfdeXmlSchemaSet
worden toegevoegd. Er wordt geen type gegenereerd in hetXmlSchemaSet
type als dit al bestaat. Daarom is het aanroepenExport
van meerdere keren op hetzelfdeXsdDataContractExporter
de voorkeur om meerdere exemplaren van deXsdDataContractExporter
klasse te maken. Dit voorkomt dat er dubbele schematypen worden gegenereerd.Notitie
Als er een fout optreedt tijdens het exporteren, heeft deze
XmlSchemaSet
een onvoorspelbare status.Toegang tot de XmlSchemaSet eigenschap via de Schemas eigenschap.
Exportopties
U kunt de Options eigenschap van de XsdDataContractExporter klasse instellen op een exemplaar van de ExportOptions klasse om verschillende aspecten van het exportproces te beheren. U kunt met name de volgende opties instellen:
KnownTypes. Deze verzameling vertegenwoordigt
Type
de bekende typen voor de typen die worden geëxporteerd. (Zie voor meer informatie Bekende typen gegevenscontract.) Deze bekende typen worden geëxporteerd voor elkeExport
aanroep naast de typen die aan deExport
methode worden doorgegeven.DataContractSurrogate. Een IDataContractSurrogate kan worden opgegeven via deze eigenschap waarmee het exportproces wordt aangepast. Zie Data Contract Surrogates voor meer informatie. Standaard wordt er geen surrogaat gebruikt.
Helpermethoden
Naast de primaire rol van het exporteren van het schema, biedt het XsdDataContractExporter
verschillende nuttige helpermethoden die informatie bieden over typen. Deze omvatten:
GetRootElementName methode. Deze methode neemt een
Type
en retourneert een XmlQualifiedName die de naam en naamruimte van het hoofdelement vertegenwoordigt die zou worden gebruikt als dit type werd geserialiseerd als het hoofdobject.GetSchemaTypeName methode. Deze methode neemt een
Type
en retourneert een XmlQualifiedName die de naam vertegenwoordigt van het XSD-schematype dat zou worden gebruikt als dit type naar het schema werd geëxporteerd. Voor IXmlSerializable typen die worden weergegeven als anonieme typen in het schema, retourneertnull
deze methode.GetSchemaType methode. Deze methode werkt alleen met IXmlSerializable typen die worden weergegeven als anonieme typen in het schema en worden geretourneerd
null
voor alle andere typen. Voor anonieme typen retourneert deze methode een XmlSchemaType die een bepaaldeType
vertegenwoordigt.
Exportopties zijn van invloed op al deze methoden.