空接口或公开私有验证

时间:2017-07-18 09:26:02

标签: c# oop

我有一个基本抽象类,它在构造函数中调用私有验证方法。对于其后代的一部分,我想跳过这个检查。这个类有太多的用法,我不能从基类中移动验证。

哪个是更好的解决方案

  • 创建一个空接口,在将跳过此检查的类中实现
  • 公开此属性并使其受到虚拟保护,并在派生类中使用空主体覆盖它,该类应跳过检查

(还将赞赏任何其他更好的解决方案)

2 个答案:

答案 0 :(得分:1)

如果这个考虑仅适用于本课程,我会选择第二种方法。如果在更多的类中会出现这种情况,那么它将代表一些独立于类的行为,我会选择第一个选项(然后你也可以在多数情况下使用多态,你只想使用没有检查的类)。 / p>

答案 1 :(得分:0)

public abstract class BaseClass {
    public BaseClass(bool? validate = true) {
        if (validate.HasValue && validate.Value) {
            Validate();
        }
    }

    private void Validate() { }
}

public class ChildClass1 : BaseClass {
    public ChildClass1() : base() { }
}

public class ChildClass2 : BaseClass {
    public ChildClass2() : base(false) { }
}