ServiceContractGenerator Class
The System.ServiceModel.Description::ServiceContractGenerator type generates service contract code and binding configurations from System.ServiceModel.Description::ServiceEndpoint description objects.
Assembly: System.ServiceModel (in System.ServiceModel.dll)
| Name | Description | |
|---|---|---|
![]() | ServiceContractGenerator() | Initializes a new instance of the ServiceContractGenerator class with a new System.CodeDom::CodeCompileUnit instance. |
![]() | ServiceContractGenerator(CodeCompileUnit^) | Initializes a new instance of the ServiceContractGenerator class with the specified System.CodeDom::CodeCompileUnit instance. |
![]() | ServiceContractGenerator(CodeCompileUnit^, Configuration^) | Initializes a new instance of the ServiceContractGenerator class with the specified System.CodeDom::CodeCompileUnit instance and the specified System.Configuration::Configuration instance. |
![]() | ServiceContractGenerator(Configuration^) | Initializes a new instance of the ServiceContractGenerator class with the specified System.Configuration::Configuration instance. |
| Name | Description | |
|---|---|---|
![]() | Configuration | Gets the System.Configuration::Configuration instance that contains the generated binding configurations. |
![]() | Errors | Gets a collection of System.ServiceModel.Description::MetadataConversionError objects generated when generating service contract code and endpoint configurations. |
![]() | NamespaceMappings | Gets a mapping from contract description namespaces to managed namespaces that is used when generating code. |
![]() | Options | Gets or sets options for generating service contract code. |
![]() | ReferencedTypes | Gets a mapping from contract descriptions to referenced contract types. |
![]() | TargetCompileUnit | Gets the target System.CodeDom::CodeCompileUnit object for generating service contract code. |
| Name | Description | |
|---|---|---|
![]() | Equals(Object^) | Determines whether the specified object is equal to the current object.(Inherited from Object.) |
![]() | Finalize() | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.(Inherited from Object.) |
![]() | GenerateBinding(Binding^, String^%, String^%) | Generates a binding configuration for the specified System.ServiceModel.Channels::Binding instance. |
![]() | GenerateServiceContractType(ContractDescription^) | Generates a service contract type from the specified System.ServiceModel.Description::ContractDescription instance. |
![]() | GenerateServiceEndpoint(ServiceEndpoint^, ChannelEndpointElement^%) | Generates a service contract type and an endpoint configuration from the specified System.ServiceModel.Description::ServiceEndpoint instance. |
![]() | GetHashCode() | Serves as the default hash function. (Inherited from Object.) |
![]() | GetType() | |
![]() | MemberwiseClone() | |
![]() | ToString() | Returns a string that represents the current object.(Inherited from Object.) |
Use the ServiceContractGenerator to create tools or to modify the default contract generation process using an System.ServiceModel.Description::IWsdlImportExtension.
The following example shows the use of a ServiceContractGenerator to convert downloaded metadata into 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(); }
Available since 3.0
Any public static ( Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.


