想要使用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){}

一只萌萌小番薯
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`的方法}}一切迎刃而解、有时候换个思维其实就能解开难题|^_^|
添加回答
举报
0/150
提交
取消