您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> .NET >> C# HTTP Web Service 方法实现可选参数

C# HTTP Web Service 方法实现可选参数(1/2)

来源:网络整理     时间:2017/7/24 0:43:18     关键词:

关于网友提出的“ C# HTTP Web Service 方法实现可选参数”问题疑问,本网通过在网上对“ C# HTTP Web Service 方法实现可选参数”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: C# HTTP Web Service 方法实现可选参数
描述:

想要使用C#的asmx的WebMethod来实现一个WebService,。

想要用户给服务器传递数据,finger_print_base64 是一个必须传递的固定参数,thresholdmini_matches是两个可选参数。

目前已知可以定义MessageName 来通过方法重载实现相同方法名的可选参数

[WebMethod(MessageName = "Default")]
public void SearchPerson(String finger_print_base64)
{

}

[WebMethod(MessageName = "AddThreshold")]
public void SearchPerson(String finger_print_base64,int threshold)
{

}

[WebMethod(MessageName = "AddMinMatches")]
public void SearchPerson(String finger_print_base64,int mini_matches)
{

}

但是,由于第二个方法和第三个方法的参数类型是相同的,无法实现重载。

想知道是否有其他方法来实现可选参数。

因为这是一个功能的接口,不想要改变方法名:SearchPerson,所以不想通用不同的方法名来进行区分。

提前谢过各位大佬。


解决方案1:

谢邀。
个人认为其实没必要纠结这些细节,既然技术上没有比较好的办法那就从业务上去解决,二者取其一,互相权衡即可。
你这个问题从技术上是无解的,所以不要白费力气了,分为两个方法就是了。
有时候你认为合理的未必就是对的,程序在正确可靠的前提下,最简单可行的设计就是好设计,何必舍近求远。
有这个功夫为何不拿来多看看书呢?

解决方案2:

谢邀、讲真我看你问题看了半天才搞懂、(主要是我一看概念性的东西脑壳就大)

针对你的问题、我自己有两个解决方法:

1.何必纠结SearchPerson的名称、直接再一个就OK、你可以取名SearchPerson1什么的、只要你自己懂就行、如果别人也要用的话可以在方法前加上

/// 
/// 你的方法名写在这里
/// 

当你 . 方法的时候会有中文注解、方便别人也知道你写的什么

2.既然参数类型相同、我们需要考虑的就是怎样区分AddThresholdAddMinMatches这两种方法

方法很简单、楼楼只需再多加一个参数、在方法内做一个判断就行了、如

[WebMethod(MessageName = "你的名字")]
public void SearchPerson(String finger_print_base64,int mini_matches,int new_data)
{
     if(new_data==1)
     {
         //在这里写`AddThreshold`的方法
     }
     else if(new_data==2)
     {
         //在这写`AddMinMatches`的方法
     }
}

一切迎刃而解、有时候换个思维其实就能解开难题 |^_^|

解决方案3:

加参就是了。反正你可用可不用,加一个可选参数就是了

[WebMethod(MessageName = "AddThreshold")]
public void SearchPerson(String finger_print_base64,int threshold = 0,string param = "")
{

}

相关图片

相关文章