ServiceContractGenerator Klasse

Definition

Der Typ generiert Dienstvertragscode ServiceContractGenerator und Bindungskonfigurationen aus ServiceEndpoint Beschreibungsobjekten.

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

Beispiele

Das folgende Beispiel zeigt die Verwendung einer ServiceContractGenerator Zum Konvertieren heruntergeladener Metadaten in 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 zum ServiceContractGenerator Erstellen von Tools oder zum Ändern des Standardmäßigen Vertragsgenerierungsprozesses mithilfe eines System.ServiceModel.Description.IWsdlImportExtension.

Konstruktoren

Name Beschreibung
ServiceContractGenerator()

Initialisiert eine neue Instanz der ServiceContractGenerator Klasse mit einer neuen CodeCompileUnit Instanz.

ServiceContractGenerator(CodeCompileUnit, Configuration)

Initialisiert eine neue Instanz der ServiceContractGenerator Klasse mit der angegebenen CodeCompileUnit Instanz und der angegebenen Configuration Instanz.

ServiceContractGenerator(CodeCompileUnit)

Initialisiert eine neue Instanz der ServiceContractGenerator Klasse mit der angegebenen CodeCompileUnit Instanz.

ServiceContractGenerator(Configuration)

Initialisiert eine neue Instanz der ServiceContractGenerator Klasse mit der angegebenen Configuration Instanz.

Eigenschaften

Name Beschreibung
Configuration

Ruft die Configuration Instanz ab, die die generierten Bindungskonfigurationen enthält.

Errors

Ruft eine Auflistung von Objekten ab, die beim Generieren von MetadataConversionError Dienstvertragscode und Endpunktkonfigurationen generiert werden.

NamespaceMappings

Ruft eine Zuordnung von Vertragsbeschreibungsnamespaces zu verwalteten Namespaces ab, die beim Generieren von Code verwendet werden.

Options

Dient zum Abrufen oder Festlegen von Optionen zum Generieren von Dienstvertragscode.

ReferencedTypes

Ruft eine Zuordnung von Vertragsbeschreibungen zu referenzierten Vertragstypen ab.

TargetCompileUnit

Ruft das Zielobjekt CodeCompileUnit zum Generieren von Dienstvertragscode ab.

Methoden

Name Beschreibung
Equals(Object)

Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht.

(Geerbt von Object)
GenerateBinding(Binding, String, String)

Generiert eine Bindungskonfiguration für die angegebene Binding Instanz.

GenerateServiceContractType(ContractDescription)

Generiert einen Dienstvertragstyp aus der angegebenen ContractDescription Instanz.

GenerateServiceEndpoint(ServiceEndpoint, ChannelEndpointElement)

Generiert einen Dienstvertragstyp und eine Endpunktkonfiguration aus der angegebenen ServiceEndpoint Instanz.

GetHashCode()

Dient als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Gilt für: