繁体   English   中英

接口和继承的C#最佳实践

[英]c# best practices for interface and inheritance

我有一个带有接口的抽象基类。

interface ISubmit {
    bool SubmitFile();
}

public abstract class SubmitMaster : ISubmit {
    public abstract bool SubmitFile();
}

public class SubmitRoute : SubmitMaster {
    public override bool SubmitFile() {
        //...
    }
}

基类具有子类使用的其他一些实现的方法,但是我需要确保每个子类都有SubmitFile()方法,并且每个子类都需要有自己的块。 目前,它的工作状况还不错,但是我觉得我所做的事情是多余的。 我什至需要界面吗? 还是将基类和SubmitFile()抽象化是错误的举动?

在这种情况下,最佳做法是什么?

在您的情况下,该接口绝对是多余的。

如果应该由不一定从SubmitMaster抽象类派生的其他类实现该接口,也许我仍然会维护这样的接口。

或者,如果接口是API的一部分,并且您不需要在需要使用SubmitFile方法的任何地方公开SubmitMaster抽象类的所有成员。

实际上,在这里我可能会提出很多有用的理由,但是如果您只是在定义一个接口以在抽象类中实现该接口,并且您永远不会将引用键入为所谓的接口,那么, ,这绝对是多余的。

进一步阅读:

在这种情况下,最佳做法是什么? 我什至需要界面吗?

您是否打算进行制作,至少可以说三种 彼此无关的类型,但是所有这些类型都可以用作ISubmit?

例如,假设我们有一个代表序列的接口。 我可以给您一打完全不相关的类,它们都是序列。 数组,列表,字典,树,等等等等,它们都是序列。 因此,我们制作了一个表示序列的接口,即IEnumerable。

如果您不打算制作一堆具有共同用例的不相关事物,则不要使用界面

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM