0

プロジェクト要件の場合、そのWsdlContractConversionContextためのコンストラクターを持たないものをインスタンス化する必要があります。

これを達成するための回避策はありますか?

WsdlContractConversionContextSystem.ServiceModel.Description名前空間のメンバーです。

注: 要件はまさに、 と の実装を行ってIWsdlExportExtension.ExportContractおりIWsdlImportExtension.ImportContract、この実装を単体テストするには のインスタンスが必要であるということですWsdlContractConversionContext

4

1 に答える 1

1

これを行うには、基本的に2つの方法があります。リフレクションを使用してクラスの非公開コンストラクターを呼び出すことができます(適切なパラメーターをクラスに渡していることを確認してください)。または、WCFに作成させて、必要な場所で使用することもできます。はパラメータの1つとしてまたはのWsdlContractConversionContextいずれかに渡されるため、2つのインターフェイスのいずれかを実装し(WSDLを消費するツールをいじる必要がないため、通常はエクスポートが簡単です)、インターフェイスを強制する必要があります。呼び出されます(そのためにサービスメタデータエンドポイントをヒットする必要がある場合があります)。IWsdlExportExtension.ExportContractIWsdlImportExtension.ImportContract

http://blogs.msdn.com/b/carlosfigueira/archive/2011/10/06/wcf-extensibility-wsdl-export-extension.aspxの投稿には、WSDLエクスポート拡張機能の実装例があります。

質問の編集に続いて更新します。WCFの多くの部分は、単体テストが難しいことで有名です。WCF自体を使用してインスタンスを作成できない場合は、リフレクションを使用するしかありません。変換コンテキストクラスのインスタンスを作成するには、ContractDescription(コントラクト用に作成できますが、簡単ではありません)のインスタンスと、さらに難しいPortTypeが必要です。WSDLエクスポート/インポート拡張機能の実装をユニットテストすることは、努力する価値がないかもしれません。

于 2012-09-18T04:51:10.717 に答える