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