ServiceContractGenerator Klas
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Het ServiceContractGenerator type genereert servicecontractcode en bindingsconfiguraties van ServiceEndpoint beschrijvingsobjecten.
public ref class ServiceContractGenerator
public class ServiceContractGenerator
type ServiceContractGenerator = class
Public Class ServiceContractGenerator
- Overname
-
ServiceContractGenerator
Voorbeelden
In het volgende voorbeeld ziet u het gebruik van een ServiceContractGenerator om gedownloade metagegevens te converteren naar 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();
}
Opmerkingen
Gebruik de ServiceContractGenerator opdracht om hulpprogramma's te maken of het standaardproces voor het genereren van contracten te wijzigen met behulp van een System.ServiceModel.Description.IWsdlImportExtension.
Constructors
| Name | Description |
|---|---|
| ServiceContractGenerator() |
Initialiseert een nieuw exemplaar van de ServiceContractGenerator klasse met een nieuw CodeCompileUnit exemplaar. |
| ServiceContractGenerator(CodeCompileUnit, Configuration) |
Initialiseert een nieuw exemplaar van de ServiceContractGenerator klasse met het opgegeven CodeCompileUnit exemplaar en het opgegeven Configuration exemplaar. |
| ServiceContractGenerator(CodeCompileUnit) |
Initialiseert een nieuw exemplaar van de ServiceContractGenerator klasse met het opgegeven CodeCompileUnit exemplaar. |
| ServiceContractGenerator(Configuration) |
Initialiseert een nieuw exemplaar van de ServiceContractGenerator klasse met het opgegeven Configuration exemplaar. |
Eigenschappen
| Name | Description |
|---|---|
| Configuration |
Hiermee haalt u het Configuration exemplaar op dat de gegenereerde bindingsconfiguraties bevat. |
| Errors |
Hiermee haalt u een verzameling objecten op die worden gegenereerd bij het genereren van MetadataConversionError servicecontractcode en eindpuntconfiguraties. |
| NamespaceMappings |
Hiermee haalt u een toewijzing op van naamruimten voor contractbeschrijvingen naar beheerde naamruimten die worden gebruikt bij het genereren van code. |
| Options |
Hiermee haalt u opties op voor het genereren van servicecontractcode of stelt u deze in. |
| ReferencedTypes |
Hiermee haalt u een toewijzing op van contractbeschrijvingen naar contracttypen waarnaar wordt verwezen. |
| TargetCompileUnit |
Hiermee haalt u het doelobject CodeCompileUnit op voor het genereren van servicecontractcode. |
Methoden
| Name | Description |
|---|---|
| Equals(Object) |
Bepaalt of het opgegeven object gelijk is aan het huidige object. (Overgenomen van Object) |
| GenerateBinding(Binding, String, String) |
Hiermee wordt een bindingsconfiguratie voor het opgegeven exemplaar gegenereerd Binding . |
| GenerateServiceContractType(ContractDescription) |
Hiermee genereert u een servicecontracttype van het opgegeven ContractDescription exemplaar. |
| GenerateServiceEndpoint(ServiceEndpoint, ChannelEndpointElement) |
Hiermee genereert u een servicecontracttype en een eindpuntconfiguratie van het opgegeven ServiceEndpoint exemplaar. |
| GetHashCode() |
Fungeert als de standaardhashfunctie. (Overgenomen van Object) |
| GetType() |
Hiermee haalt u de Type huidige instantie op. (Overgenomen van Object) |
| MemberwiseClone() |
Hiermee maakt u een ondiepe kopie van de huidige Object. (Overgenomen van Object) |
| ToString() |
Retourneert een tekenreeks die het huidige object vertegenwoordigt. (Overgenomen van Object) |