ServiceContractGenerator Classe

Définition

Le type génère du ServiceContractGenerator code de contrat de service et des configurations de liaison à partir d’objets de ServiceEndpoint description.

public ref class ServiceContractGenerator
public class ServiceContractGenerator
type ServiceContractGenerator = class
Public Class ServiceContractGenerator
Héritage
ServiceContractGenerator

Exemples

L’exemple suivant montre l’utilisation d’une ServiceContractGenerator pour convertir les métadonnées téléchargées en 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();
  }

Remarques

Utilisez l’outil ServiceContractGenerator pour créer des outils ou pour modifier le processus de génération de contrat par défaut à l’aide d’un System.ServiceModel.Description.IWsdlImportExtension.

Constructeurs

Nom Description
ServiceContractGenerator()

Initialise une nouvelle instance de la ServiceContractGenerator classe avec une nouvelle CodeCompileUnit instance.

ServiceContractGenerator(CodeCompileUnit, Configuration)

Initialise une nouvelle instance de la ServiceContractGenerator classe avec l’instance spécifiée CodeCompileUnit et l’instance spécifiée Configuration .

ServiceContractGenerator(CodeCompileUnit)

Initialise une nouvelle instance de la ServiceContractGenerator classe avec l’instance spécifiée CodeCompileUnit .

ServiceContractGenerator(Configuration)

Initialise une nouvelle instance de la ServiceContractGenerator classe avec l’instance spécifiée Configuration .

Propriétés

Nom Description
Configuration

Obtient l’instance Configuration qui contient les configurations de liaison générées.

Errors

Obtient une collection d’objets générés lors de MetadataConversionError la génération de code de contrat de service et de configurations de point de terminaison.

NamespaceMappings

Obtient un mappage entre les espaces de noms de description de contrat et les espaces de noms managés utilisés lors de la génération de code.

Options

Obtient ou définit des options pour générer du code de contrat de service.

ReferencedTypes

Obtient un mappage des descriptions de contrats aux types de contrat référencés.

TargetCompileUnit

Obtient l’objet cible CodeCompileUnit pour générer du code de contrat de service.

Méthodes

Nom Description
Equals(Object)

Détermine si l’objet spécifié est égal à l’objet actuel.

(Hérité de Object)
GenerateBinding(Binding, String, String)

Génère une configuration de liaison pour l’instance spécifiée Binding .

GenerateServiceContractType(ContractDescription)

Génère un type de contrat de service à partir de l’instance spécifiée ContractDescription .

GenerateServiceEndpoint(ServiceEndpoint, ChannelEndpointElement)

Génère un type de contrat de service et une configuration de point de terminaison à partir de l’instance spécifiée ServiceEndpoint .

GetHashCode()

Sert de fonction de hachage par défaut.

(Hérité de Object)
GetType()

Obtient la Type de l’instance actuelle.

(Hérité de Object)
MemberwiseClone()

Crée une copie superficielle du Objectactuel.

(Hérité de Object)
ToString()

Retourne une chaîne qui représente l’objet actuel.

(Hérité de Object)

S’applique à