0

値 (文字列) を受け取る Web サービスを作成しています。文字列に基づいて、それが「タイプ 1」か「タイプ 2」か、および処理に関して何をする必要があるかを判断します。したがって、私の Web サービスは、 http ://www.mysite.com/service.asmx?op=ProcessData?DataID=string を使用してデータを受信するように設定されています 。

文字列を送信するクライアントは、2 つの異なる要求を使用して送信しようとしています: http://www.mysite.com/service.asmx?op=ProcessData?DataIDType1=string http://www.mysite.com/service.asmx?op =ProcessData?DataIDType2=文字列

彼が送信しているタイプを知ることは可能ですか? この権利に対して別の署名を設定することはできませんか? 両方とも同じパラメーターだからですか?

4

2 に答える 2

0

それは書くことに似ています:

public void DoSomething(String inputA)
{
    ...
}

public void DoSomething(String inputB)
{
    ...
}

それは機能しません (正当な理由があります!) - メソッドのシグネチャは同じです。

次の呼び出しを想像してください。

MyClass.DoSomething("TEST");

それはどちらを呼ぶでしょうか?どちらを呼び出す必要がありますか?

あなたのオプション(私が見ているように):

public void DoThingA(String input)
{
    ...
}

public void DoThingB(String input)
{
    ...
}

これは、異なるメソッド シグネチャを提供し、2 つの異なる操作を実行しているという事実を表します (これは、後でよりクリーンな IMO になります)。

単一のメソッド署名を主張する場合は、次のことができます。

public void DoSomething(String input, object operationType) //where object is whatever type you see fit...
{
    if(operationType == ...)
    {
        DoThingA(input);
    }
    else
    {
        DoThingB(input);
    } 
}

または...

public void DoSomething(String input)
{
    switch(input)
    {
        case "A":
            ...
            break;
        case "B":
            ...
            break;
        default:
            ...
            break;
    }
}

最適なものは、利用可能なオプションによって異なります。しかし、私は 2 つのメソッドを作成します。

于 2013-08-21T14:54:07.577 に答える