2009-11-27 85 views
0

我有一個.NET的Web服務,它的派生版本。C# - 如何隱藏派生類的Web方法

我的問題是,在派生版本中,我有一個我想隱藏的方法(從WSDL和首頁)。我試圖重寫,標記爲過時,將其設置爲私有和重寫,但仍然是,web服務屬性仍然「有它的方式」。

是否有任何方法來刪除派生方法的方法屬性。或者以任何方式隱藏WSDL中的方法?

//羅賓

回答

0

我不覺得有什麼,你可以讓獲得此行爲的選項。如果你真的需要隱藏它,你不能簡單地將其刪除,我會創建一個新的Web服務,只公開您想要暴露的方法。

2

由於.NET(以及其他任何面向對象的框架)的繼承系統並不是爲此設計的:請看the Liskov substitution principle

也許你應該選擇其他課程來達到你想要的。例如,不是使用繼承,而是創建一個全新的服務,並使其方法簡單地調用原始服務類上的等效方法;這樣你就可以只包含你想在新服務中使用的方法。

+1

成分! – 2010-08-05 12:30:35

0

此方法適用於.NET 4.0:

[WebService(Namespace = "http://tempuri.org/")] 
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
public class Service1 : System.Web.Services.WebService 
{ 
    [WebMethod] 
    public virtual string HelloWorld() 
    { 
     return "Hello World"; 
    } 
} 

[WebService(Namespace = "http://tempuri.org/")] 
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
public class Service2 : Service1 
{ 
    public override string HelloWorld() 
    { 
     throw new NotImplementedException(); 
    } 
} 

客服2從服務1派生並重寫了HelloWorld的WebMethod不超過繼承指定WebMethodAttribute