1

C# と .NET 4 を使用して、WCF 対応のアプリケーションを構築しています。以下を実装する「親」アセンブリがあります。

[DataContract]
public abstract class A
{
  //...
}

次に、他の「子」アセンブリはA、次のように のサブクラスを実装します。

[DataContract]
public class B : A
{
  //...
}

別のアセンブリには、WCF サービスとしてカプセル化しようとしているメソッドがいくつかあります。これらのメソッドの中には、戻り値の型がA.

明らかに、派生クラスが class から継承するには、子アセンブリに親アセンブリへの参照を含める必要がありますA。問題が発生するのは、WCFKnownTypeがクラスに属性を追加Aして、潜在的なサブクラスをすべてリストすることを要求しているように見える場合です。これには、存在する親アセンブリがA子アセンブリへの参照を持っている必要があり、循環依存関係が作成されます。

これを回避する他の方法はありますか?WCF は、戻り値の型として使用されている抽象クラスのすべての潜在的な具象クラスの型を知る必要がありますか? ありがとうございました。

編集。いくつかのコメントで示唆されているように、KnownTypeAttribute.MethodNameに基づくアプローチを試しました。これにより、サブクラスが存在するアセンブリを動的に読み込み、必要に応じてサブクラスを WCF に返すことができます。クラスAが戻り値の型として使用されている場合は機能しますが、メソッド パラメーターとして使用されている場合は機能しません。「タイプが予期されていません」という WCF エラーが発生し続けます。今後もアプローチを試みます。

4

1 に答える 1

0

この問題を回避する可能性のあるシリアライザーを構築するときに、既知のタイプを設定できます

http://msdn.microsoft.com/en-us/library/aa344259.aspx

于 2013-08-28T11:09:50.557 に答える