ServiceContractGenerator クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
ServiceContractGenerator 型は、ServiceEndpoint 説明オブジェクトからサービス コントラクト コードとバインド構成を生成します。
public ref class ServiceContractGenerator
public class ServiceContractGenerator
type ServiceContractGenerator = class
Public Class ServiceContractGenerator
- 継承
-
ServiceContractGenerator
例
ServiceContractGenerator を使用して、ダウンロードされたメタデータをコードに変換する方法を次の例に示します。
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();
}
注釈
ServiceContractGenerator を使用して、ツールを作成したり、System.ServiceModel.Description.IWsdlImportExtension を使用して既定のコントラクト生成プロセスを変更したりできます。
コンストラクター
ServiceContractGenerator() |
新しい ServiceContractGenerator インスタンスを使用して、CodeCompileUnit クラスの新しいインスタンスを初期化します。 |
ServiceContractGenerator(CodeCompileUnit) |
指定された ServiceContractGenerator インスタンスを使用して、CodeCompileUnit クラスの新しいインスタンスを初期化します。 |
ServiceContractGenerator(CodeCompileUnit, Configuration) |
指定した ServiceContractGenerator インスタンスと指定した CodeCompileUnit インスタンスを使用して、Configuration クラスの新しいインスタンスを初期化します。 |
ServiceContractGenerator(Configuration) |
指定された ServiceContractGenerator インスタンスを使用して、Configuration クラスの新しいインスタンスを初期化します。 |
プロパティ
Configuration |
生成されたバインディング構成を含む Configuration インスタンスを取得します。 |
Errors |
サービス コントラクト コードとエンドポイント構成の生成時に生成される MetadataConversionError オブジェクトのコレクションを取得します。 |
NamespaceMappings |
コントラクトの説明の名前空間からコードの生成時に使用されるマネージド名前空間へのマッピングを取得します。 |
Options |
サービス コントラクト コードを生成するためのオプションを取得または設定します。 |
ReferencedTypes |
コントラクトの説明から参照されるコントラクト型へのマッピングを取得します。 |
TargetCompileUnit |
サービス コントラクト コードを生成するためのターゲット CodeCompileUnit オブジェクトを取得します。 |
メソッド
Equals(Object) |
指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。 (継承元 Object) |
GenerateBinding(Binding, String, String) |
指定した Binding インスタンスのバインディング構成を生成します。 |
GenerateServiceContractType(ContractDescription) |
指定した ContractDescription インスタンスからサービス コントラクト型を生成します。 |
GenerateServiceEndpoint(ServiceEndpoint, ChannelEndpointElement) |
指定した ServiceEndpoint インスタンスからサービス コントラクト型とエンドポイント構成を生成します。 |
GetHashCode() |
既定のハッシュ関数として機能します。 (継承元 Object) |
GetType() |
現在のインスタンスの Type を取得します。 (継承元 Object) |
MemberwiseClone() |
現在の Object の簡易コピーを作成します。 (継承元 Object) |
ToString() |
現在のオブジェクトを表す文字列を返します。 (継承元 Object) |
適用対象
.NET