ServiceContractGenerator ServiceContractGenerator ServiceContractGenerator ServiceContractGenerator Class

Definition

Der ServiceContractGenerator-Typ generiert einen Dienstvertragscode und Bindungskonfigurationen von ServiceEndpoint-Beschreibungsobjekten.The ServiceContractGenerator type generates service contract code and binding configurations from ServiceEndpoint description objects.

public ref class ServiceContractGenerator
public class ServiceContractGenerator
type ServiceContractGenerator = class
Public Class ServiceContractGenerator
Vererbung
ServiceContractGeneratorServiceContractGeneratorServiceContractGeneratorServiceContractGenerator

Beispiele

Im folgenden Beispiel wird die Verwendung von ServiceContractGenerator gezeigt, um heruntergeladene Metadaten in Code zu konvertieren.The following example shows the use of a ServiceContractGenerator to convert downloaded metadata into code.

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

Hinweise

Verwenden Sie ServiceContractGenerator, um Tools zu erstellen oder den Standard-Vertragsgenerierungsprozess mit einer System.ServiceModel.Description.IWsdlImportExtension zu ändern.Use the ServiceContractGenerator to create tools or to modify the default contract generation process using an System.ServiceModel.Description.IWsdlImportExtension.

Konstruktoren

ServiceContractGenerator() ServiceContractGenerator() ServiceContractGenerator() ServiceContractGenerator()

Initialisiert eine neue Instanz der ServiceContractGenerator-Klasse mit einer neuen CodeCompileUnit-Instanz.Initializes a new instance of the ServiceContractGenerator class with a new CodeCompileUnit instance.

ServiceContractGenerator(CodeCompileUnit) ServiceContractGenerator(CodeCompileUnit) ServiceContractGenerator(CodeCompileUnit) ServiceContractGenerator(CodeCompileUnit)

Initialisiert eine neue Instanz der ServiceContractGenerator-Klasse mit der angegebenen CodeCompileUnit-Instanz.Initializes a new instance of the ServiceContractGenerator class with the specified CodeCompileUnit instance.

ServiceContractGenerator(CodeCompileUnit, Configuration) ServiceContractGenerator(CodeCompileUnit, Configuration) ServiceContractGenerator(CodeCompileUnit, Configuration) ServiceContractGenerator(CodeCompileUnit, Configuration)

Initialisiert eine neue Instanz der ServiceContractGenerator-Klasse mit der angegebenen CodeCompileUnit-Instanz und der angegebenen Configuration-Instanz.Initializes a new instance of the ServiceContractGenerator class with the specified CodeCompileUnit instance and the specified Configuration instance.

ServiceContractGenerator(Configuration) ServiceContractGenerator(Configuration) ServiceContractGenerator(Configuration) ServiceContractGenerator(Configuration)

Initialisiert eine neue Instanz der ServiceContractGenerator-Klasse mit der angegebenen Configuration-Instanz.Initializes a new instance of the ServiceContractGenerator class with the specified Configuration instance.

Eigenschaften

Configuration Configuration Configuration Configuration

Ruft die Configuration-Instanz ab, die die generierten Bindungskonfigurationen enthält.Gets the Configuration instance that contains the generated binding configurations.

Errors Errors Errors Errors

Ruft eine Auflistung von MetadataConversionError-Objekten ab, die beim Generieren des Dienstvertragscodes und der Endpunktkonfigurationen generiert werden.Gets a collection of MetadataConversionError objects generated when generating service contract code and endpoint configurations.

NamespaceMappings NamespaceMappings NamespaceMappings NamespaceMappings

Ruft aus Vertragsbeschreibungsnamespaces eine Zuordnung zu verwalteten Namespaces ab, die beim Generieren von Code verwendet wird.Gets a mapping from contract description namespaces to managed namespaces that is used when generating code.

Options Options Options Options

Ruft Optionen zum Generieren des Dienstvertragscodes ab oder legt sie fest.Gets or sets options for generating service contract code.

ReferencedTypes ReferencedTypes ReferencedTypes ReferencedTypes

Ruft eine Zuordnung von Vertragsbeschreibungen zu referenzierten Vertragstypen ab.Gets a mapping from contract descriptions to referenced contract types.

TargetCompileUnit TargetCompileUnit TargetCompileUnit TargetCompileUnit

Ruft das Ziel-CodeCompileUnit-Objekt ab, um Dienstvertragscode zu generieren.Gets the target CodeCompileUnit object for generating service contract code.

Methoden

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GenerateBinding(Binding, String, String) GenerateBinding(Binding, String, String) GenerateBinding(Binding, String, String) GenerateBinding(Binding, String, String)

Generiert eine Bindungskonfiguration für die angegebene Binding-Instanz.Generates a binding configuration for the specified Binding instance.

GenerateServiceContractType(ContractDescription) GenerateServiceContractType(ContractDescription) GenerateServiceContractType(ContractDescription) GenerateServiceContractType(ContractDescription)

Generiert einen Dienstvertragstyp von der angegebenen ContractDescription-Instanz.Generates a service contract type from the specified ContractDescription instance.

GenerateServiceEndpoint(ServiceEndpoint, ChannelEndpointElement) GenerateServiceEndpoint(ServiceEndpoint, ChannelEndpointElement) GenerateServiceEndpoint(ServiceEndpoint, ChannelEndpointElement) GenerateServiceEndpoint(ServiceEndpoint, ChannelEndpointElement)

Generiert einen Dienstvertragstyp und eine Endpunktkonfiguration von der angegebenen ServiceEndpoint-Instanz.Generates a service contract type and an endpoint configuration from the specified ServiceEndpoint instance.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Fungiert als Standardhashfunktion.Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

Ruft den Type der aktuellen Instanz ab.Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.Returns a string that represents the current object.

(Inherited from Object)

Gilt für: