2011-01-26 76 views
1

我使用Castle Active Record'ActiveRecordBase类作为我的db对象的基类。这使我可以利用AR模式的好处,例如:如何从基类中隐藏方法?

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

问题是,对于某些对象,我想隐藏这些方法。我怎样才能做到这一点?我不使用这些对象的接口。

编辑1: 为了更清楚:我想有10个类从基类继承,但其中3个不应该公开基类的一些方法。因此,例如对于MyClassB,这个:

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

应该是不可能的 - 此对象不应该能够保存()。编号2: 我读过c# hide from dervied classes some properties of base class。我同意这是不好的方法,但请记住,我必须使用ActiveRecordBase,我不能简单地修改它(至少如果我想坚持原始的Castle Active Record源)。

+2

你的意思是隐藏,究竟是什么意思? – BoltClock 2011-01-26 10:33:54

+0

那么你的意思是`MyClassB`不应该有`Number`属性? – BoltClock 2011-01-26 10:40:12

回答

3

你不这样做。

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

3

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