Delen via


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

  1. Maak een instantie van de XsdDataContractExporter.

  2. 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.

  3. 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.

  4. 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 hetzelfde XmlSchemaSetworden toegevoegd. Er wordt geen type gegenereerd in het XmlSchemaSet type als dit al bestaat. Daarom is het aanroepen Export van meerdere keren op hetzelfde XsdDataContractExporter de voorkeur om meerdere exemplaren van de XsdDataContractExporter 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.

  5. 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 elke Export aanroep naast de typen die aan de Export 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, retourneert nulldeze 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 bepaalde Typevertegenwoordigt.

Exportopties zijn van invloed op al deze methoden.

Zie ook