为了账号安全,请及时绑定邮箱和手机立即绑定

C# HTTP Web Service 方法实现可选参数

C# HTTP Web Service 方法实现可选参数

慕哥6287543 2019-05-25 17:07:17
想要使用C#的asmx的WebMethod来实现一个WebService,。想要用户给服务器传递数据,finger_print_base64是一个必须传递的固定参数,threshold和mini_matches是两个可选参数。目前已知可以定义MessageName来通过方法重载实现相同方法名的可选参数[WebMethod(MessageName="Default")]publicvoidSearchPerson(Stringfinger_print_base64){}[WebMethod(MessageName="AddThreshold")]publicvoidSearchPerson(Stringfinger_print_base64,intthreshold){}[WebMethod(MessageName="AddMinMatches")]publicvoidSearchPerson(Stringfinger_print_base64,intmini_matches){}但是,由于第二个方法和第三个方法的参数类型是相同的,无法实现重载。想知道是否有其他方法来实现可选参数。因为这是一个功能的接口,不想要改变方法名:SearchPerson,所以不想通用不同的方法名来进行区分。提前谢过各位大佬。
查看完整描述

2 回答

?
30秒到达战场

TA贡献1828条经验 获得超6个赞

加参就是了。反正你可用可不用,加一个可选参数就是了
[WebMethod(MessageName="AddThreshold")]publicvoidSearchPerson(Stringfinger_print_base64,intthreshold=0,stringparam=""){
}
[WebMethod(MessageName="AddMinMatches")]publicvoidSearchPerson(Stringfinger_print_base64,intmini_matches=0){
}
                            
查看完整回答
反对 回复 2019-05-25
?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

谢邀、讲真我看你问题看了半天才搞懂、(主要是我一看概念性的东西脑壳就大)
针对你的问题、我自己有两个解决方法:
1.何必纠结SearchPerson的名称、直接再一个就OK、你可以取名SearchPerson1什么的、只要你自己懂就行、如果别人也要用的话可以在方法前加上
///
///你的方法名写在这里
///
当你.方法的时候会有中文注解、方便别人也知道你写的什么
2.既然参数类型相同、我们需要考虑的就是怎样区分AddThreshold和AddMinMatches这两种方法
方法很简单、楼楼只需再多加一个参数、在方法内做一个判断就行了、如
[WebMethod(MessageName="你的名字")]
publicvoidSearchPerson(Stringfinger_print_base64,intmini_matches,intnew_data)
{
if(new_data==1)
{
//在这里写`AddThreshold`的方法
}
elseif(new_data==2)
{
//在这写`AddMinMatches`的方法
}
}
一切迎刃而解、有时候换个思维其实就能解开难题|^_^|
                            
查看完整回答
反对 回复 2019-05-25
  • 2 回答
  • 0 关注
  • 1274 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号