0

在 WCF 中,当您请求两个值并能够使用这些值执行不同的计算时,如何让用户决定请求哪个服务。

例如,您要求 value1 和 value 2。用户可以选择使用这些值执行加法、减法和乘法。

你怎么能做到这一点?

        [OperationContract]
    int GetTwoValues(int value1, int value2);

public int addition(int value1, int value2){
return value1+value2;
}

public int subtraction(int value1, int value2){
return value1-value2;
}

如何做一些逻辑,比如

if user.request="addition"{
do addition
}
else if user.request="subtraction"{
do subtraction
}

我知道这不是我写的代码,只是想让你理解我在说什么。任何帮助将不胜感激。

4

1 回答 1

1

不太确定我理解这个问题

[OperationContract]
public int Subtraction(int value1, int value2)
{
    return value1 - value2;
}

[OperationContract]
public int Addition(int value1, int value2)
{
    return value1 + value2;
}

会像这样工作

[OperationContract]
public int Calculation(int value1, int value2, string calcType)
{
    switch (calcType)
    {
        case "addition":
            return value1 + value2;
        case "subtraction":
            return value1 - value2;
    }
    //return default or throw exception
}

当然,并不是说两者都没有缺点,但两者都符合您的标准。

编辑:您的评论提出了一个明显的观点,即开关盒允许用户可能提供不映射的值。

是的,我不会使用字符串,这就是你的例子!

可能的方法?

  • 验证用户输入 - 当他们提供无效的内容时让他们知道
  • 使用默认值
  • 抛出异常
  • 使用 anenum强制用户从预定义的列表中进行选择
  • 同样使用第一种方法

我想也许你需要在你的问题中解释更多关于你想要实现的目标。

于 2013-02-07T01:43:33.537 回答