클래스에서 스키마 내보내기
데이터 계약 모델에 사용되는 클래스에서 XSD(XML 스키마 정의 언어) 스키마를 생성하려면 XsdDataContractExporter 클래스를 사용합니다. 이 항목에서는 스키마를 만드는 프로세스에 대해 설명합니다.
내보내기 프로세스
스키마 내보내기 프로세스는 하나 이상의 형식으로 시작되고 해당 형식의 XML 프로젝션을 설명하는 XmlSchemaSet를 생성합니다.
XmlSchemaSet는 XSD 스키마 문서 집합을 나타내는 .NET Framework SOM(Schema Object Model)의 일부입니다. XmlSchemaSet에서 XSD 문서를 만들려면 XmlSchemaSet 클래스의 Schemas 속성에서 스키마 컬렉션을 사용합니다. 그런 다음 XmlSerializer를 사용하여 각 XmlSchema 개체를 serialize합니다.
스키마를 내보내려면
XsdDataContractExporter의 인스턴스를 만듭니다.
선택적 요소입니다. 생성자에 XmlSchemaSet를 포함하여 전달합니다. 이 경우 스키마를 내보내는 중 생성된 스키마는 빈 XmlSchemaSet로 시작하지 않고 이 XmlSchemaSet 인스턴스에 추가됩니다.
선택적 요소입니다. CanExport 메서드 중 하나를 호출합니다. 메서드에 따라 지정된 형식을 내보낼 수 있는지 여부가 결정됩니다. 이 메서드는 다음 단계의 Export 메서드와 동일한 오버로드를 갖습니다.
Export 메서드 중 하나를 호출합니다. Type, Type 개체의 List 또는 Assembly 개체의 List을 사용하는 세 가지 오버로드가 있습니다. 마지막 경우에서는 지정된 모든 어셈블리의 모든 형식을 내보냅니다.
Export 메서드를 여러 번 호출하면 동일한 XmlSchemaSet에 여러 항목이 추가됩니다. 형식이 이미 있으면 XmlSchemaSet에 생성되지 않습니다. 따라서 XsdDataContractExporter 클래스의 여러 인스턴스를 만드는 경우 동일한 XsdDataContractExporter에서 Export 를 여러 번 호출하는 것이 좋습니다. 이렇게 하면 중복 스키마 형식이 생성되지 않습니다.
참고
내보내기 중 오류가 발생할 경우 XmlSchemaSet 상태를 예측할 수 없습니다.
Schemas 속성을 통해 XmlSchemaSet에 액세스합니다.
내보내기 옵션
XsdDataContractExporter의 Options 속성을 ExportOptions 클래스로 설정하여 내보내기 프로세스의 다양한 측면을 제어할 수 있습니다. 특히 다음 옵션을 설정할 수 있습니다.
- KnownTypes. 이 Type 컬렉션은 내보내는 형식의 알려진 형식을 나타냅니다. 자세한 내용은 데이터 계약 알려진 형식을 참조하십시오. Export 메서드에 전달된 형식 외에도 이러한 알려진 형식이 모든 Export 호출 시 내보내집니다.
- DataContractSurrogate. 이 속성을 통해 내보내기 프로세스를 사용자 지정하는 IDataContractSurrogate를 제공할 수 있습니다. 자세한 내용은 데이터 계약 서로게이트를 참조하십시오. 기본적으로 서로게이트는 사용되지 않습니다.
도우미 메서드
스키마를 내보내는 기본 역할 외에도 XsdDataContractExporter는 형식에 대한 정보를 제공하는 몇 가지 유용한 도우미 메서드를 제공합니다. 검사 항목에는 다음이 포함됩니다.
- GetRootElementName 메서드 이 메서드는 Type을 받아서 이 형식이 루트 개체로 serialize된 경우에 사용되는 루트 요소 이름과 네임스페이스를 나타내는 XmlQualifiedName을 반환합니다.
- GetSchemaTypeName 메서드 이 메서드는 Type을 받아서 이 형식을 스키마로 내보낸 경우에 사용되는 XSD 스키마 형식의 이름을 나타내는 XmlQualifiedName을 반환합니다. 스키마에 익명 형식으로 나타나는 IXmlSerializable 형식에 대해 이 메서드는 null을 반환합니다.
- GetSchemaType 메서드 이 메서드는 스키마에 익명 형식으로 나타나는 IXmlSerializable 형식에서만 작동하고 다른 모든 형식에 대해 null을 반환합니다. 익명 형식의 경우 이 메서드는 지정된 Type을 나타내는 XmlSchemaType을 반환합니다.
내보내기 옵션은 이러한 모든 메서드에 영향을 줍니다.
참고 항목
참조
DataContractSerializer
XsdDataContractImporter
XsdDataContractExporter