簡體   English   中英

如何從基類隱藏方法?

[英]How to hide methods from base class?

我使用Castle Active Record的ActiveRecordBase類作為我的db對象的基類。 這使我可以利用AR模式的優點,例如:

MyClass clas = new MyClass();
clas.Number = 5;
clas.Save();

問題是,對於某些對象,我想隱藏這些方法。 我怎樣才能做到這一點? 我不為這些對象使用接口。

Edit1:更明確地說:我想從基類繼承10個類,但其中3個不應暴露基類的某些方法。 例如,對於MyClassB,這是:

MyClassB clasB = new MyClassB();
clasB.Number = 5;
clasB.Save();

應該是不可能的-這個對象應該不能Save()。

Edit2:我已經從派生類中讀取了c#hide基類的某些屬性 我同意這是一種不好的方法,但是請記住,我必須使用ActiveRecordBase,我不能簡單地對其進行修改(至少如果我要堅持使用原始的Castle Active Record源代碼)。

如果要隱藏它們,則可能不屬於該基類。 我建議擴展繼承層次結構以實現此目的。

你不這樣做。

您可以對設計進行重組,以使7個對象從一個提供所需功能的對象繼承,其他3個從不提供此功能的對象繼承,而它們全部從主“核心”對象繼承。 想起來就像一棵樹。 您無需更改視圖的位置,而只需更改分支的位置即可。 我不確定這種類比是否有效,但請假裝確實如此。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM