繁体   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