有人問我在採訪中能有2個webMethods的同名網絡服務中使用C#
問題能有2個webMethods的,在C#中的Web服務中相同的名稱。
功能重載是可能的,但面試官想要一個答案,而不使用函數重載。
我的答案是否定的。請更正意見。
有人問我在採訪中能有2個webMethods的同名網絡服務中使用C#
問題能有2個webMethods的,在C#中的Web服務中相同的名稱。
功能重載是可能的,但面試官想要一個答案,而不使用函數重載。
我的答案是否定的。請更正意見。
不,你不能有兩個具有相同名字和相同簽名的方法。這沒有什麼意義。
他沒有說相同的簽名。這甚至不會編譯! – leppie
@leppie,我不確定這對我有什麼意義。如果您有兩個具有相同名稱的函數並且沒有進行函數重載,那麼您的簽名相同。現在,還有其他一些有趣的事情。有這樣的事情不會編譯,因此將無法正常工作。所以,這對我來說也沒有什麼意義。 – BobbyShaftoe
我想你可以,如果你暴露他們作爲不同的外部名稱(如果可能的話)。
完全相同 - 在WCF中 - 你需要給他們不同的外部可見名稱 –
實際上,這可能需要一點工作。關鍵是改變信息名稱:
(從下面的鏈接獲取)
[WebMethod(MessageName="Add_TwoNumbers")]
http://scottwhite.blogspot.com/2005/09/overloading-web-service-methods-in-net.html
這是可以做到,你可以在這裏閱讀:http://www.codeproject.com/KB/webservices/OverloadingInWebService.aspx
你之所以需要做這個「特殊」的東西,只是因爲WSDL不支持相同的方法名稱...
編輯:我看到鏈接忘了WebServiceBinding:
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.None)]
public class TestService : System.Web.Services.WebService {
}
但這是關於超載。 – BobbyShaftoe
如果面試官想沒有函數重載的答案,並沒有說「兩種方法具有相同的名稱和簽名」,我想你需要到別處。 –