MetadataImporter 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
ServiceEndpoint 개체로 메타데이터를 가져옵니다.
public ref class MetadataImporter abstract
public abstract class MetadataImporter
type MetadataImporter = class
Public MustInherit Class MetadataImporter
- 상속
-
MetadataImporter
- 파생
예제
다음 예제에서는 System.ServiceModel.Description.WsdlImporter 파생 클래스를 사용하여 메타데이터를 사용자 지정 상태로 가져온 다음, Errors 속성을 검사하고, 가져온 메타데이터를 관리되는 형식으로 컴파일한 후 그 결과를 코드 파일로 저장하는 방법을 보여 줍니다.
static void GenerateCSCodeForService(EndpointAddress metadataAddress, string outputFile)
{
MetadataExchangeClient mexClient = new MetadataExchangeClient(metadataAddress);
mexClient.ResolveMetadataReferences = true;
MetadataSet metaDocs = mexClient.GetMetadata();
WsdlImporter importer = new WsdlImporter(metaDocs);
ServiceContractGenerator generator = new ServiceContractGenerator();
// Add our custom DCAnnotationSurrogate
// to write XSD annotations into the comments.
object dataContractImporter;
XsdDataContractImporter xsdDCImporter;
if (!importer.State.TryGetValue(typeof(XsdDataContractImporter), out dataContractImporter))
{
Console.WriteLine("Couldn't find the XsdDataContractImporter! Adding custom importer.");
xsdDCImporter = new XsdDataContractImporter();
xsdDCImporter.Options = new ImportOptions();
importer.State.Add(typeof(XsdDataContractImporter), xsdDCImporter);
}
else
{
xsdDCImporter = (XsdDataContractImporter)dataContractImporter;
if (xsdDCImporter.Options == null)
{
Console.WriteLine("There were no ImportOptions on the importer.");
xsdDCImporter.Options = new ImportOptions();
}
}
xsdDCImporter.Options.DataContractSurrogate = new DCAnnotationSurrogate();
// Uncomment the following code if you are going to do your work programmatically rather than add
// the WsdlDocumentationImporters through a configuration file.
/*
// The following code inserts a custom WsdlImporter without removing the other
// importers already in the collection.
System.Collections.Generic.IEnumerable<IWsdlImportExtension> exts = importer.WsdlImportExtensions;
System.Collections.Generic.List<IWsdlImportExtension> newExts
= new System.Collections.Generic.List<IWsdlImportExtension>();
foreach (IWsdlImportExtension ext in exts)
{
Console.WriteLine("Default WSDL import extensions: {0}", ext.GetType().Name);
newExts.Add(ext);
}
newExts.Add(new WsdlDocumentationImporter());
System.Collections.Generic.IEnumerable<IPolicyImportExtension> polExts = importer.PolicyImportExtensions;
importer = new WsdlImporter(metaDocs, polExts, newExts);
*/
System.Collections.ObjectModel.Collection<ContractDescription> contracts
= importer.ImportAllContracts();
importer.ImportAllEndpoints();
foreach (ContractDescription contract in contracts)
{
generator.GenerateServiceContractType(contract);
}
if (generator.Errors.Count != 0)
throw new Exception("There were errors during code compilation.");
// Write the code dom
System.CodeDom.Compiler.CodeGeneratorOptions options
= new System.CodeDom.Compiler.CodeGeneratorOptions();
options.BracingStyle = "C";
System.CodeDom.Compiler.CodeDomProvider codeDomProvider
= System.CodeDom.Compiler.CodeDomProvider.CreateProvider("C#");
System.CodeDom.Compiler.IndentedTextWriter textWriter
= new System.CodeDom.Compiler.IndentedTextWriter(new System.IO.StreamWriter(outputFile));
codeDomProvider.GenerateCodeFromCompileUnit(
generator.TargetCompileUnit, textWriter, options
);
textWriter.Close();
}
설명
서비스 메타데이터를 가져오려면 MetadataImporter 추상 클래스의 구현을 사용합니다. 파생 된 형식의 MetadataImporter 클래스 가져오기 Windows Communication Foundation (WCF)에서 논리를 Ws-policy를 활용 하는 메타 데이터 형식 가져오기에 대 한 지원을 구현 합니다.
MetadataImporter 구현에서는 System.ServiceModel.Description.PolicyConversionContext 개체의 서비스 메타데이터에 연결된 정책 식을 수집합니다. MetadataImporter는 메타데이터를 가져올 때 System.ServiceModel.Description.IPolicyImportExtension 속성의 MetadataImporter.PolicyImportExtensions 인터페이스 구현을 호출하여 정책을 처리합니다.
MetadataImporter 인스턴스의 System.ServiceModel.Description.IPolicyImportExtension 속성에 MetadataImporter.PolicyImportExtensions 인터페이스의 사용자 지정 구현을 추가하여 MetadataImporter로 새 정책 어설션 가져오기에 대한 지원을 추가할 수 있습니다. 또는 애플리케이션 구성 파일에 정책 가져오기 확장을 등록할 수도 있습니다.
합니다 System.ServiceModel.Description.WsdlImporter 형식은 구현의 MetadataImporter 추상 WCF에 포함 된 클래스입니다. System.ServiceModel.Description.WsdlImporter 형식은 System.ServiceModel.Description.MetadataSet 개체에 번들로 제공되는 연결된 정책과 함께 WSDL 메타데이터를 가져옵니다.
System.ServiceModel.Description.IWsdlImportExtension 인터페이스를 구현한 다음 WsdlImporter.WsdlImportExtensions 인스턴스의 System.ServiceModel.Description.WsdlImporter 속성에 이 구현을 추가하여 WSDL 확장 가져오기에 대한 지원을 추가할 수 있습니다. System.ServiceModel.Description.WsdlImporter에서 애플리케이션 구성 파일에 등록된 System.ServiceModel.Description.IWsdlImportExtension 인터페이스의 구현을 로드할 수도 있습니다.
참고
MetadataImporter 생성자는 내부용이므로 이 버전의 MetadataImporter에서 파생시킬 수 없습니다.
속성
Errors |
메타데이터를 가져오는 과정에서 오류가 발생했는지 여부를 나타내는 값을 가져옵니다. |
KnownContracts |
가져오기에 알려진 이름을 기준으로 계약 사전을 가져옵니다. |
PolicyImportExtensions |
가져오기에서 정책 어설션을 처리하기 위해 호출하는 정책 가져오기 컬렉션을 가져옵니다. |
State |
메타데이터 가져오기에 사용되는 개체 컬렉션을 가져오거나 설정합니다. |
메서드
Equals(Object) |
지정된 개체가 현재 개체와 같은지 확인합니다. (다음에서 상속됨 Object) |
GetHashCode() |
기본 해시 함수로 작동합니다. (다음에서 상속됨 Object) |
GetType() |
현재 인스턴스의 Type을 가져옵니다. (다음에서 상속됨 Object) |
ImportAllContracts() |
파생 클래스에서 재정의되는 경우 메타데이터에서 가져온 계약 컬렉션을 반환합니다. |
ImportAllEndpoints() |
파생 클래스에서 재정의되는 경우 메타데이터의 모든 엔드포인트를 반환합니다. |
MemberwiseClone() |
현재 Object의 단순 복사본을 만듭니다. (다음에서 상속됨 Object) |
ToString() |
현재 개체를 나타내는 문자열을 반환합니다. (다음에서 상속됨 Object) |