Exportera scheman från klasser
Om du vill generera XSD-schemascheman (XML Schema Definition Language) från klasser som används i datakontraktsmodellen använder du XsdDataContractExporter klassen . Det här avsnittet beskriver processen för att skapa scheman.
Exportprocessen
Schemaexportprocessen börjar med en eller flera typer och skapar en XmlSchemaSet som beskriver XML-projektionen av dessa typer.
XmlSchemaSet
är en del av .NET Frameworks schemaobjektmodell (SOM) som representerar en uppsättning XSD-schemadokument. Om du vill skapa XSD-dokument från en XmlSchemaSet
använder du samlingen med scheman från Schemas -egenskapen för XmlSchemaSet
klassen. Serialisera sedan varje XmlSchema objekt med hjälp av XmlSerializer.
Exportera scheman
Skapa en instans av XsdDataContractExporter.
Valfritt. Skicka en XmlSchemaSet i konstruktorn. I det här fallet läggs schemat som genererades under schemaexporten till i den här XmlSchemaSet instansen i stället för att börja med en tom XmlSchemaSet.
Valfritt. Anropa en av CanExport metoderna. Metoden avgör om den angivna typen kan exporteras. Metoden har samma överlagringar som
Export
metoden i nästa steg.Anropa en av Export metoderna. Det finns tre överlagringar som tar en Type, en List<T> av
Type
objekt eller ett List<T> objekt Assembly . I det sista fallet exporteras alla typer i alla angivna sammansättningar.Flera anrop till metoden resulterar i att
Export
flera objekt läggs till i sammaXmlSchemaSet
. En typ genereras inte tillXmlSchemaSet
om den redan finns där. Därför är det bättre att anropaExport
flera gånger på sammaXsdDataContractExporter
sätt än att skapa flera instanser avXsdDataContractExporter
klassen. Detta förhindrar att dubbletter av schematyper genereras.Kommentar
Om det uppstår ett fel under exporten är det
XmlSchemaSet
i ett oförutsägbart tillstånd.Få åtkomst till XmlSchemaSet via Schemas -egenskapen.
Exportalternativ
Du kan ange Options egenskapen XsdDataContractExporter för till en instans av ExportOptions klassen för att styra olika aspekter av exportprocessen. Mer specifikt kan du ange följande alternativ:
KnownTypes. Den här samlingen representerar
Type
de kända typerna för de typer som exporteras. (Mer information finns i Kända typer av datakontrakt.) Dessa kända typer exporteras vid varjeExport
anrop utöver de typer som skickasExport
till metoden.DataContractSurrogate. En IDataContractSurrogate kan anges via den här egenskapen som anpassar exportprocessen. Mer information finns i Surrogater för datakontrakt. Som standard används ingen surrogat.
Hjälpmetoder
Förutom den primära rollen att exportera schema XsdDataContractExporter
tillhandahåller de flera användbara hjälpmetoder som ger information om typer. Dessa kan vara:
GetRootElementName Metod. Den här metoden tar en
Type
och returnerar ett XmlQualifiedName som representerar rotelementets namn och namnområde som skulle användas om den här typen serialiserades som rotobjektet.GetSchemaTypeName Metod. Den här metoden tar en
Type
och returnerar ett XmlQualifiedName som representerar namnet på den XSD-schematyp som skulle användas om den här typen exporterades till schemat. För IXmlSerializable typer som representeras som anonyma typer i schemat returnerarnull
den här metoden .GetSchemaType Metod. Den här metoden fungerar bara med IXmlSerializable typer som representeras som anonyma typer i schemat och returnerar
null
för alla andra typer. För anonyma typer returnerar den här metoden en XmlSchemaType som representerar en vissType
.
Exportalternativen påverkar alla dessa metoder.