Udostępnij za pośrednictwem


ServiceContractGenerator Klasa

Definicja

Typ ServiceContractGenerator generuje kod kontraktu usługi i konfiguracje powiązań z ServiceEndpoint obiektów opisu.

public ref class ServiceContractGenerator
public class ServiceContractGenerator
type ServiceContractGenerator = class
Public Class ServiceContractGenerator
Dziedziczenie
ServiceContractGenerator

Przykłady

W poniższym przykładzie pokazano użycie elementu ServiceContractGenerator do przekonwertowania pobranych metadanych na kod.

  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

Użyj polecenia ServiceContractGenerator , aby utworzyć narzędzia lub zmodyfikować domyślny proces generowania kontraktów przy użyciu elementu System.ServiceModel.Description.IWsdlImportExtension.

Konstruktory

ServiceContractGenerator()

Inicjuje ServiceContractGenerator nowe wystąpienie klasy przy użyciu nowego CodeCompileUnit wystąpienia.

ServiceContractGenerator(CodeCompileUnit)

Inicjuje ServiceContractGenerator nowe wystąpienie klasy z określonym CodeCompileUnit wystąpieniem.

ServiceContractGenerator(CodeCompileUnit, Configuration)

Inicjuje ServiceContractGenerator nowe wystąpienie klasy z określonym CodeCompileUnit wystąpieniem i określonym Configuration wystąpieniem.

ServiceContractGenerator(Configuration)

Inicjuje ServiceContractGenerator nowe wystąpienie klasy z określonym Configuration wystąpieniem.

Właściwości

Configuration

Configuration Pobiera wystąpienie zawierające wygenerowane konfiguracje powiązań.

Errors

Pobiera kolekcję MetadataConversionError obiektów generowanych podczas generowania kodu kontraktu usługi i konfiguracji punktu końcowego.

NamespaceMappings

Pobiera mapowanie z przestrzeni nazw opisu kontraktu na zarządzane przestrzenie nazw, które są używane podczas generowania kodu.

Options

Pobiera lub ustawia opcje generowania kodu kontraktu usługi.

ReferencedTypes

Pobiera mapowanie z opisów kontraktów na typy kontraktów, do których się odwołujesz.

TargetCompileUnit

Pobiera obiekt docelowy CodeCompileUnit do generowania kodu kontraktu usługi.

Metody

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GenerateBinding(Binding, String, String)

Generuje konfigurację powiązania dla określonego Binding wystąpienia.

GenerateServiceContractType(ContractDescription)

Generuje typ kontraktu usługi na podstawie określonego ContractDescription wystąpienia.

GenerateServiceEndpoint(ServiceEndpoint, ChannelEndpointElement)

Generuje typ kontraktu usługi i konfigurację punktu końcowego z określonego ServiceEndpoint wystąpienia.

GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Dotyczy