4
我正在用VB編寫一個Web服務,並用C#重寫它。 服務類實現兩個接口,每個接口有四個方法。 四種方法中的三種具有相同的簽名方法名稱和參數列表。第四種方法具有相同的名稱,但具有不同的參數列表。C#相當於VB.NET接口實現
在VB中,您明確指出了與公共服務類方法關聯的接口方法。因此,對於相同的方法,實現如下所示:
class WebServiceClass
{
Public Function Method1(result as Int32) As String Implements Interface1.Method1, Interface2.Method1
Public Sub Method2(Id as Int64, P3 as Int32) Implements Interface1.Method2
Public Sub Method3(In as Int64) Implements Interface2.Method2
}
您可以在C#中執行此操作嗎?
我知道你可以使用Interface.Method2(Id爲Int64,...)和Interface2.Method2(In as ...)顯式地定義Web服務類中的方法。但是這意味着改變這些方法的名稱,因此任何使用這些方法的應用程序都必須更新。
我也可以更改接口方法的名稱以匹配Web服務方法,但使用這些接口的任何應用程序都必須更改。
是否有任何顯式標識Web服務類中的接口方法,但保持Web服務類方法與原始方法相同的名稱和簽名?
這是一個很好的模式;包含大量代碼的顯式接口實現通常是可繼承類中的反模式,因爲派生類不能包裝它們。擁有一個明確的接口實現只需鏈接到一個受保護的虛擬方法就可以使事情變得更加清晰 – supercat
不應將Method1,Method2和Method3設置爲私有? –
@GloriaSantin取決於你的情況,以及你是否希望他們可以被其他實例訪問 – JaredPar