c# - 如何隐藏基类的方法?

标签 c# inheritance

我使用 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/

相关文章:

c# - 从 byte[] 中删除尾随零?

c# - 字符/字符串比较

java - 在子类的方法中本地调用父类(super class)方法时使用 "super"关键字或使用父类(super class)实例?

c++ - 从接口(interface)的父接口(interface)在哪里实现功能?

swift - 协议(protocol)中的继承是什么

c# - 自定义Identity和GenericPrincipal引起的序列化异常

c# - 将 Python(pyelliptic、openssl)ecc key 转换为 c#(BouncyCaSTLe?)

c++ - 建模 "optional"继承

c++ - 从派生类创建复制构造函数和赋值运算符

c# - 动态声明一个类型作为参数传递...c#