ServiceContractGenerator Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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) |