如何从基类隐藏方法?

时间:2011-01-26 10:32:25

标签: c# inheritance

我使用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();

不可能 - 这个对象应该不能保存()。

EDIT2: 我读过c# hide from dervied classes some properties of base class。我同意这是不好的方法,但请记住,我必须使用ActiveRecordBase,我不能简单地修改(至少如果我想坚持使用原始的Castle Active Record源)。

2 个答案:

答案 0 :(得分:3)

如果要隐藏它们,可能不属于该基类。我建议扩展继承层次结构来实现这一点。

答案 1 :(得分:3)

你不这样做。

您重构您的设计,以便7个对象继承自一个提供所需功能的对象,另外3个继承自不提供此功能的对象,并且它们都继承自主“核心”对象。把它想象成一棵树。您可以简单地更改分支的位置,而不是尝试从视图中隐藏树叶。我不确定这个比喻是否有效,但我们假装它可以。