ServiceContractGenerator Classe

Définition

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

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

Exemples

L'exemple suivant montre l'utilisation d'un ServiceContractGenerator pour convertir des métadonnées téléchargées dans du 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 le ServiceContractGenerator pour créer des outils ou pour modifier le processus de génération de contrat par défaut à l'aide d'une System.ServiceModel.Description.IWsdlImportExtension.

Constructeurs

ServiceContractGenerator()

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

ServiceContractGenerator(CodeCompileUnit)

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

ServiceContractGenerator(CodeCompileUnit, Configuration)

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

ServiceContractGenerator(Configuration)

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

Propriétés

Configuration

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

Errors

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

NamespaceMappings

Obtient un mappage entre des espaces de noms de description de contrat et des espaces de noms managés, qui est utilisé 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 entre des descriptions de contrat et des types de contrat référencés.

TargetCompileUnit

Obtient l'objet CodeCompileUnit cible pour la génération de code de contrat de service.

Méthodes

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 Binding spécifiée.

GenerateServiceContractType(ContractDescription)

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

GenerateServiceEndpoint(ServiceEndpoint, ChannelEndpointElement)

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

GetHashCode()

Fait office de fonction de hachage par défaut.

(Hérité de Object)
GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
ToString()

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

(Hérité de Object)

S’applique à