ServiceContractGenerator Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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) |