0

渡されたユーザー タイプに基づいてデータを返す WCF サービスがあります。このメソッドの定義は次のとおりです。

[OperationContract]
public Element GetElement(User user, int id)

私が抱えている問題は、サービスに多数のメソッドがあり、それぞれがユーザーを取り込み、ユーザーのタイプに関連する情報を返すスイッチが含まれていることです。すなわち

switch(user.GetType())
{
    case typeOf(UserA):
     break;
    case typeOf(UserB):
     break;
    case typeOf(UserC):
     break;
}

以下の構造を実装して、WCF を正しいメソッドに自動的に誘導する方法はありますか? 何らかの行動によるものではないでしょうか?

[OperationContract]
public Element GetElement(User user, int id)
{
     //DO NOTHING
}

public Element GetElement(UserA user, int id)
{
     //Process for typeof UserA
}

public Element GetElement(UserB user, int id)
{
     //Process for typeof UserB
}

public Element GetElement(UserC user, int id)
{
     //Process for typeof UserC
}
4

3 に答える 3

1

IDispatchOperationSelectorを実装することで、同様のことができる場合があります。それについての素敵なブログ記事がここにあります。

ただし、オーバーロードされたメソッド名で問題が発生する可能性があります-そのようなことは、ネットワーク上でうまく機能しない傾向があります.

私の意見では、パブリック データ コントラクトで継承階層を公開することは避けるべきです。継承は非常に OO の概念であり、サービス指向のコンテキストにはうまく適合しません。

于 2013-10-15T13:46:17.973 に答える