Как мне переопределить метод в WCF Resfull service?

#c# #wcf

#c# #wcf

Вопрос:

Я нашел сообщение, объясняющее, как поместить

 [OperationContract(Name = "GetDataWithNumber")]
public User GetName(int id)

[OperationContract(Name = "GetDataWithString")]
public User GetName(string email)
  

Это не сработает, если я использую Restfull service!

 [OperationContract(Name = "GetDataWithNumber")]
[WebGet(UriTemplate = "Service/GetName?id={id}", ResponseFormat = WebMessageFormat.Json)]
public User GetName(int id)
  

У кого-нибудь есть решение для этого?

Ответ №1:

Я бы рекомендовал использовать только два метода:

 [OperationContract(Name = "GetDataWithNumber")]
public User GetNameFromId(int id)

[OperationContract(Name = "GetDataWithString")]
public User GetNameFromEmail(string email)
  

Это устранит путаницу, а также будет более понятным. Поскольку служба REST будет переводить из текстового представления, явный характер очень полезен с точки зрения удобства обслуживания.

Комментарии:

1. Я хочу использовать тот же метод только потому, что пользователь может отправить мне идентификатор или адрес электронной почты.

2. @HardCode: затем вам нужно будет создать один метод, который принимает строку, и определить внутри метода, является ли это идентификатором или электронной почтой. При этом я думаю, что лучше использовать два и сделать ваш API явным — это более понятно для конечного пользователя И для вас.