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

方法重载对象

方法重载对象

C#
梦里花落0921 2021-10-23 16:44:37
我尝试在 C# WebApi 中使用方法重载[HttpPost] public HttpResponseMessage UpdateUser(PersonalInfoModel personalInfo){}[HttpPost] public HttpResponseMessage UpdateUser(RolesModel roles){}在我调用的客户端上: /UpdateUser(json) 假设我们要更新用户个人信息,因此 json 将如下所示:{firstName: "testUser", lastName: "testUser", age: 20}它应该与如下所示的 PersonalInfoModel 相匹配:public class PersonalInfoModel{    public string FirstName { get; set; }    public string LastName { get; set; }    public int Age { get; set; }}我的想法是更新用户信息的不同部分并保持清晰,这意味着使用不同的对象调用相同的方法,我认为服务器上的 UpdateUser 会知道要使用什么函数,但它失败了, 因为服务器不知道什么使用路线。我尝试做的下一件事是像这样在服务器中只调用一个路由:[HttpPost] public HttpResponseMessage UpdateUser(dynamic obj){    return Update(obj);}public Update(PersonalInfoModel personalInfo){}public Update(RolesModel roles){}以上也没有解决错误:“最佳重载方法匹配有一些无效参数”我试图在谷歌上查看但没有成功克服这个问题。
查看完整描述

2 回答

?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

您需要使用RouteAttribute 来区分这些方法供客户端调用。


[Route("api/Update")]

public class UpdateController

{

   [Route("PersonalInfo")]

   [HttpPost] 

   public HttpResponseMessage UpdateUser(PersonalInfoModel 

   personalInfo){}


   [Route("Roles")]

   [HttpPost] 

   public HttpResponseMessage UpdateUser(RolesModel roles){}

}

然后客户端调用 api/Update/PersonalInfo来调用第一个方法并 api/Update/Roles调用第二个方法


希望这可以帮助。


查看完整回答
反对 回复 2021-10-23
?
三国纷争

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

尝试这个


[HttpPost]

[Route("/api/[controller]/personalInfo")]

public HttpResponseMessage UpdateUser(PersonalInfoModel personalInfo){}


[HttpPost] 

[Route("/api/[controller]/roles")]

public HttpResponseMessage UpdateUser(RolesModel roles){}


查看完整回答
反对 回复 2021-10-23
  • 2 回答
  • 0 关注
  • 131 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信