我使用 CaSTLe Active Record 的 ActiveRecordBase 类作为我的数据库对象的基类。这让我可以利用 AR 模式的优势,例如:
MyClass clas = new MyClass();
clas.Number = 5;
clas.Save();
问题是,对于某些对象,我想隐藏这些方法。我怎样才能做到这一点?我不为这些对象使用接口(interface)。
编辑1: 更清楚地说:我希望有 10 个类继承自基类,但其中 3 个不应公开基类的某些方法。因此,例如对于 MyClassB,这是:
MyClassB clasB = new MyClassB();
clasB.Number = 5;
clasB.Save();
不应该是可能的——这个对象不应该能够 Save()。
编辑2: 我读过 c# hide from dervied classes some properties of base class .我同意这是不好的方法,但请记住我必须使用 ActiveRecordBase,我不能简单地修改它(至少如果我想坚持使用原始的 CaSTLe Active Record 源)。
最佳答案
你不这样做。
您重构您的设计,以便 7 个对象继承自一个提供所需功能的对象,另外 3 个继承自不提供此功能的对象,并且它们都继承自主要“核心”对象。把它想象成一棵树。您无需尝试从 View 中隐藏树叶,只需更改 Twig 的位置即可。我不确定这个类比是否有效,但让我们假装它有效。
关于c# - 如何隐藏基类的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4803514/