Udostępnij za pośrednictwem


WsdlImporter.ImportAllContracts Metoda

Definicja

Zwraca zestaw ContractDescription obiektów reprezentujących informacje o typie portu w dokumentach metadanych.

public:
 override System::Collections::ObjectModel::Collection<System::ServiceModel::Description::ContractDescription ^> ^ ImportAllContracts();
public override System.Collections.ObjectModel.Collection<System.ServiceModel.Description.ContractDescription> ImportAllContracts ();
override this.ImportAllContracts : unit -> System.Collections.ObjectModel.Collection<System.ServiceModel.Description.ContractDescription>
Public Overrides Function ImportAllContracts () As Collection(Of ContractDescription)

Zwraca

Collection<ContractDescription>

Zestaw ContractDescription obiektów reprezentujących informacje o typie portu w dokumentach metadanych.

Wyjątki

Przykłady

W poniższym przykładzie kodu pokazano, jak użyć polecenia WsdlImporter , aby dodać niestandardowy System.Runtime.Serialization.IDataContractSurrogateelement , zaimportować wszystkie kontrakty i skompilować te kontrakty i zapisać je w pliku.

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

Uwagi

ImportAllContracts Użyj metody , aby zaimportować wszystkie informacje o typie portu WSDL z dokumentów metadanych i zwrócić je jako ContractDescription obiekty. Zaleca się sprawdzenie właściwości w Errors celu określenia, czy przed użyciem zwróconych obiektów występują błędy importu.

Aby zaimportować tylko jeden typ portu, zobacz metodę ImportContract .

Dotyczy