【问题标题】:How to let user decide which service to request in WCF?如何让用户决定在 WCF 中请求哪个服务?
【发布时间】:2013-02-07 01:38:19
【问题描述】:

在 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
}

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

【问题讨论】:

    标签: c# .net windows wcf communication


    【解决方案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
    }
    

    当然也不是没有缺点,但都符合你的标准。

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

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

    可能的方法?

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

    我认为您可能需要在问题中详细说明您想要实现的目标。

    【讨论】:

    • 您好,感谢您的回答,它有点接近解决方案,但是当我执行它时会产生一个问题,因为程序没有返回任何内容。
    • 用什么方法?什么输入值?这是给你一个想法,实现细节取决于你的实际问题
    • 在调用 calType 时使用相同的 switch case 方法是否可以将列表填充给用户以选择要执行的计算类型并进行选择的计算?
    猜你喜欢
    • 1970-01-01
    • 2010-10-16
    • 1970-01-01
    • 2019-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多