Поделиться через


WsdlImporter Класс

Определение

Импортирует метаданные языка описания веб-служб (WSDL) 1.1 с WS-Policy вложениями.

public ref class WsdlImporter : System::ServiceModel::Description::MetadataImporter
public class WsdlImporter : System.ServiceModel.Description.MetadataImporter
type WsdlImporter = class
    inherit MetadataImporter
Public Class WsdlImporter
Inherits MetadataImporter
Наследование
WsdlImporter

Примеры

В следующем примере кода показано, как добавить WsdlImporter настраиваемый System.Runtime.Serialization.IDataContractSurrogate, импортировать все контракты и скомпилировать эти контракты и сохранить их в файле.

  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();
  }

Комментарии

WsdlImporter Используйте класс для импорта метаданных, а также преобразования этой информации в различные классы, представляющие сведения о контракте и конечной точке.

Базовый класс для WsdlImporterMetadataImporter класса определяет методы, которые выборочно импортируют сведения о контрактах и конечных точках и свойствах, которые предоставляют любые ошибки импорта и принимают сведения о типе, относящиеся к процессу импорта и преобразования. Тип WsdlImporter использует настраиваемые средства импорта политик (IPolicyImportExtension реализации) из родительского типа для обработки пользовательских инструкций политики и собственных пользовательских импортов WSDL (IWsdlImportExtension реализаций) для обработки пользовательских элементов WSDL. Дополнительные сведения см. в разделе "Расширение системы метаданных".

При импорте политики из документов WsdlImporter WSDL тип будет пытаться использовать до 32 сочетаний альтернативных политик, присоединенных к разным субъектам политики WSDL. Если ни одно сочетание не импортируется без ошибок, первая комбинация используется для создания частичной пользовательской привязки.

Помимо этих методов и свойств, WsdlImporter также реализует методы, поддерживающие импорт сведений о привязке и свойствах, которые обеспечивают доступ к любым документам политики, документам WSDL, расширениям WSDL и документам схемы XML. Сведения о расширении для поддержки WsdlImporter пользовательских элементов WSDL см. в разделе IWsdlImportExtension.

Обычно WsdlImporter класс используется в трехэтапном процессе.

  1. WsdlImporter Создайте объект и передайте MetadataSet объект конструктору.

  2. Вызовите соответствующий Import метод, чтобы получить результаты.

  3. Errors Проверьте свойство, чтобы определить наличие ошибок импорта.

Замечание

При импорте типов портов WSDL, если QName типа порта соответствует записи в KnownContracts словаре, тип порта не импортируется и используется известный контракт.

Никакие значения не возвращаются из WsdlImporter свойств до вызова одного из методов импорта. Пользовательские System.ServiceModel.Description.IWsdlImportExtension объекты можно загрузить в WsdlImporter программно или с помощью элемента wsdlImporters> конфигурации< клиента.

Метаданные, импортированные в качестве конечных точек службы, нельзя использовать для создания среды выполнения или экспорта метаданных, так как импортированные конечные точки не содержат сведений об управляемом типе. Чтобы использовать метаданные для создания клиентской среды выполнения или среды выполнения службы или создания метаданных, сначала необходимо создать и скомпилировать код из метаданных и использовать эти данные типа для создания нового System.ServiceModel.Description.ContractDescription объекта с помощью GetContract.

Конструкторы

Имя Описание
WsdlImporter(MetadataSet, IEnumerable<IPolicyImportExtension>, IEnumerable<IWsdlImportExtension>, MetadataImporterQuotas)

WsdlImporter Создает объект из указанных метаданных, пользовательских импортов политик и пользовательских импортеров WSDL.

WsdlImporter(MetadataSet, IEnumerable<IPolicyImportExtension>, IEnumerable<IWsdlImportExtension>)

WsdlImporter Создает объект из указанных метаданных, пользовательских импортов политик и пользовательских импортеров WSDL.

WsdlImporter(MetadataSet)

Инициализирует новый экземпляр класса WsdlImporter.

Свойства

Имя Описание
Errors

Возвращает значение, указывающее, были ли ошибки при импорте метаданных.

(Унаследовано от MetadataImporter)
KnownContracts

Получает словарь контрактов по имени, о том, о чем знает импортер.

(Унаследовано от MetadataImporter)
PolicyImportExtensions

Возвращает коллекцию импортеров политик, которые импортер вызывает для обработки утверждений политики.

(Унаследовано от MetadataImporter)
State

Возвращает или задает коллекцию объектов, используемых при импорте метаданных.

(Унаследовано от MetadataImporter)
WsdlDocuments

Возвращает набор объектов, описывающих сведения о контракте в документах ServiceDescription метаданных.

WsdlImportExtensions

Возвращает набор объектов, используемых для импорта пользовательских сведений IWsdlImportExtension WSDL.

XmlSchemas

Возвращает набор XmlSchema объектов, описывающих типы в метаданных.

Методы

Имя Описание
Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
ImportAllBindings()

Возвращает набор объектов, Binding импортированных из документов метаданных.

ImportAllContracts()

Возвращает набор объектов, представляющих сведения о типе порта в документах ContractDescription метаданных.

ImportAllEndpoints()

Возвращает конечную ServiceEndpointCollection точку в документах WSDL.

ImportBinding(Binding)

Binding Возвращает объект, представляющий сведения о привязке из набора документов метаданных.

ImportContract(PortType)

Возвращает объект, представляющий метаданные ContractDescription , расположенные по указанным сведениям типа порта.

ImportEndpoint(Port)

ServiceEndpoint Возвращает из набора документов метаданных, которые используют сведения из указанного Port объекта.

ImportEndpoints(Binding)

Возвращает значение ServiceEndpointCollection , представляющее все типы портов WSDL с помощью указанного Binding.

ImportEndpoints(PortType)

Возвращает значение ServiceEndpointCollection , представляющее все типы портов WSDL, связанные с указанным PortType.

ImportEndpoints(Service)

Возвращает значениеServiceEndpointCollection, представляющее все типы портов WSDL в указанных.Service

MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Применяется к