Skip to main content
 首页 » 编程设计

没有方法重载的 c# 多态性(对于 web 方法)

2024年01月29日26jirigala

好的,所以我在编写一些重载方法后意识到 web 方法不能重载(意识到我的意思是 VS 扔了一个稻田,不允许我更新服务引用)。我试图像这样解决这个问题:

    public string DoPing<T>(T IP) 
    { 
 
        if (typeof(T) == typeof(string)) 
        {  
            return DoPingString(IP); 
        } 
        if (typeof(T) == typeof(IPAddress)) 
        { 
            return DoPingIP(IP); 
        } 
        throw new Exception("Programmer Error"); 
    } 

但是当我调用相应的(重命名的)方法时,我遇到了无法从 T 转换为字符串/Ipadress 的错误。 有人可以解释为什么它不起作用,并可能修复它或给我一个替代解决方案吗? 提前致谢。

编辑:好点,泛型可能有点矫枉过正(我尝试了另一种解决方案,但在尝试之前失败了)。 DoPingString(string String) 和 DoPingIP(IPAdress Address) 是签名。 明天我会给最接近的答案打勾。我以单独的方式解决了这个问题。

请您参考如下方法:

您可以使用 WebMethodAttribute :

[WebMethod(MessageName = "DoPingIPAddress")] 
public string DoPing(IPAddress ip) { } 
 
[WebMethod(MessageName = "DoPingString")] 
public string DoPing(string ip) { } 

但是从客户端来看,您将有两种不同的方法:Web 服务/SOAP 约束。

Documentation