ServiceContractGenerator Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
El ServiceContractGenerator tipo genera configuraciones de enlace y código de contrato de servicio a partir de ServiceEndpoint objetos de descripción.
public ref class ServiceContractGenerator
public class ServiceContractGenerator
type ServiceContractGenerator = class
Public Class ServiceContractGenerator
- Herencia
-
ServiceContractGenerator
Ejemplos
En el ejemplo siguiente se muestra el uso de para ServiceContractGenerator convertir metadatos descargados en código.
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();
}
Comentarios
ServiceContractGenerator Use para crear herramientas o para modificar el proceso de generación de contratos predeterminado mediante .System.ServiceModel.Description.IWsdlImportExtension
Constructores
| Nombre | Description |
|---|---|
| ServiceContractGenerator() |
Inicializa una nueva instancia de la ServiceContractGenerator clase con una nueva CodeCompileUnit instancia. |
| ServiceContractGenerator(CodeCompileUnit, Configuration) |
Inicializa una nueva instancia de la ServiceContractGenerator clase con la instancia especificada CodeCompileUnit y la instancia especificada Configuration . |
| ServiceContractGenerator(CodeCompileUnit) |
Inicializa una nueva instancia de la ServiceContractGenerator clase con la instancia especificada CodeCompileUnit . |
| ServiceContractGenerator(Configuration) |
Inicializa una nueva instancia de la ServiceContractGenerator clase con la instancia especificada Configuration . |
Propiedades
| Nombre | Description |
|---|---|
| Configuration |
Obtiene la Configuration instancia que contiene las configuraciones de enlace generadas. |
| Errors |
Obtiene una colección de MetadataConversionError objetos generados al generar código de contrato de servicio y configuraciones de punto de conexión. |
| NamespaceMappings |
Obtiene una asignación de espacios de nombres de descripción de contrato a espacios de nombres administrados que se usan al generar código. |
| Options |
Obtiene o establece opciones para generar código de contrato de servicio. |
| ReferencedTypes |
Obtiene una asignación de descripciones de contrato a tipos de contrato a los que se hace referencia. |
| TargetCompileUnit |
Obtiene el objeto de destino CodeCompileUnit para generar código de contrato de servicio. |
Métodos
| Nombre | Description |
|---|---|
| Equals(Object) |
Determina si el objeto especificado es igual al objeto actual. (Heredado de Object) |
| GenerateBinding(Binding, String, String) |
Genera una configuración de enlace para la instancia especificada Binding . |
| GenerateServiceContractType(ContractDescription) |
Genera un tipo de contrato de servicio a partir de la instancia especificada ContractDescription . |
| GenerateServiceEndpoint(ServiceEndpoint, ChannelEndpointElement) |
Genera un tipo de contrato de servicio y una configuración de punto de conexión a partir de la instancia especificada ServiceEndpoint . |
| GetHashCode() |
Actúa como función hash predeterminada. (Heredado de Object) |
| GetType() |
Obtiene el Type de la instancia actual. (Heredado de Object) |
| MemberwiseClone() |
Crea una copia superficial del Objectactual. (Heredado de Object) |
| ToString() |
Devuelve una cadena que representa el objeto actual. (Heredado de Object) |