ServiceContractGenerator Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Typen ServiceContractGenerator genererar tjänstkontraktskod och bindningskonfigurationer från ServiceEndpoint beskrivningsobjekt.
public ref class ServiceContractGenerator
public class ServiceContractGenerator
type ServiceContractGenerator = class
Public Class ServiceContractGenerator
- Arv
-
ServiceContractGenerator
Exempel
I följande exempel visas användningen av en ServiceContractGenerator för att konvertera nedladdade metadata till kod.
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();
}
Kommentarer
ServiceContractGenerator Använd för att skapa verktyg eller för att ändra standardprocessen för kontraktgenerering med hjälp av en System.ServiceModel.Description.IWsdlImportExtension.
Konstruktorer
| Name | Description |
|---|---|
| ServiceContractGenerator() |
Initierar en ny instans av ServiceContractGenerator klassen med en ny CodeCompileUnit instans. |
| ServiceContractGenerator(CodeCompileUnit, Configuration) |
Initierar en ny instans av ServiceContractGenerator klassen med den angivna CodeCompileUnit instansen och den angivna Configuration instansen. |
| ServiceContractGenerator(CodeCompileUnit) |
Initierar en ny instans av ServiceContractGenerator klassen med den angivna CodeCompileUnit instansen. |
| ServiceContractGenerator(Configuration) |
Initierar en ny instans av ServiceContractGenerator klassen med den angivna Configuration instansen. |
Egenskaper
| Name | Description |
|---|---|
| Configuration |
Hämtar den Configuration instans som innehåller de genererade bindningskonfigurationerna. |
| Errors |
Hämtar en samling MetadataConversionError objekt som genereras när du genererar tjänstkontraktskod och slutpunktskonfigurationer. |
| NamespaceMappings |
Hämtar en mappning från kontraktbeskrivningsnamnområden till hanterade namnområden som används när kod genereras. |
| Options |
Hämtar eller anger alternativ för att generera tjänstkontraktskod. |
| ReferencedTypes |
Hämtar en mappning från kontraktsbeskrivningar till refererade kontraktstyper. |
| TargetCompileUnit |
Hämtar målobjektet CodeCompileUnit för att generera tjänstkontraktskod. |
Metoder
| Name | Description |
|---|---|
| Equals(Object) |
Avgör om det angivna objektet är lika med det aktuella objektet. (Ärvd från Object) |
| GenerateBinding(Binding, String, String) |
Genererar en bindningskonfiguration för den angivna Binding instansen. |
| GenerateServiceContractType(ContractDescription) |
Genererar en tjänstkontraktstyp från den angivna ContractDescription instansen. |
| GenerateServiceEndpoint(ServiceEndpoint, ChannelEndpointElement) |
Genererar en tjänstkontraktstyp och en slutpunktskonfiguration från den angivna ServiceEndpoint instansen. |
| GetHashCode() |
Fungerar som standard-hash-funktion. (Ärvd från Object) |
| GetType() |
Hämtar den aktuella instansen Type . (Ärvd från Object) |
| MemberwiseClone() |
Skapar en ytlig kopia av den aktuella Object. (Ärvd från Object) |
| ToString() |
Returnerar en sträng som representerar det aktuella objektet. (Ärvd från Object) |