C# 是否可以向1个web服务发送相同的参数但不同的名称?

C# 是否可以向1个web服务发送相同的参数但不同的名称?,c#,web-services,C#,Web Services,我们正在创建一个web服务来接收一个值(字符串)。根据字符串,我们确定它是“类型1”还是“类型2”,以及在处理方面需要做什么。 因此,我的web服务设置为通过以下方式接收数据: 发送字符串的客户端希望使用2个不同的请求发送字符串: 我能知道他在发送哪种类型的邮件吗?我不能为这个设置不同的签名,对吗?因为它们都是相同的参数?这类似于写: public void DoSomething(String inputA) { ... } public void DoSomething(Str

我们正在创建一个web服务来接收一个值(字符串)。根据字符串,我们确定它是“类型1”还是“类型2”,以及在处理方面需要做什么。 因此,我的web服务设置为通过以下方式接收数据:

发送字符串的客户端希望使用2个不同的请求发送字符串:

我能知道他在发送哪种类型的邮件吗?我不能为这个设置不同的签名,对吗?因为它们都是相同的参数?

这类似于写:

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

public void DoSomething(String inputB)
{
    ...
}
它将不起作用(有充分的理由!)-方法签名是相同的

想象一下这个电话:

MyClass.DoSomething("TEST");
它叫什么名字?它应该叫哪一个

您的选择(在我看来):

这将为您提供不同的方法签名,并表示您正在执行两个不同的操作(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 FirstMethod(string param)
{
// Do something.
}

public void SecondMethod(string param)
{
// Do something.
}

这代表了良好的设计,而且当客户希望添加更多功能时,维护性方面的头痛无疑会更容易

大概您知道如何检查传递了哪些参数,因此可以查找名称和值,并编写适当的代码。到目前为止您尝试了什么?您是否考虑过使用第二个参数来指示传递的类型?或者更好的是,如果他们真的做了两个分离的事情并且创造两个分开的输入,那就创造两种方法了。这正是我所想的,但是他们的反应似乎是肯定的,并且肯定我开始第二次猜测自己,因为我在网络服务方面没有达到标准。谢谢
public void DoSomething(String input)
{
    switch(input)
    {
        case "A":
            ...
            break;
        case "B":
            ...
            break;
        default:
            ...
            break;
    }
}
public void FirstMethod(string param)
{
// Do something.
}

public void SecondMethod(string param)
{
// Do something.
}