ServiceContractGenerator クラス

定義

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, Configuration)

指定したServiceContractGenerator インスタンスと指定したCodeCompileUnit インスタンスを使用して、Configuration クラスの新しいインスタンスを初期化します。

ServiceContractGenerator(CodeCompileUnit)

指定したServiceContractGenerator インスタンスを使用して、CodeCompileUnit クラスの新しいインスタンスを初期化します。

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)

適用対象