C#:Interface和Abstract来启用实现和覆盖

jp2*_*ode 2 c# implementation overriding interface abstract

我必须设计大约5个不同的课程.

这些类的许多部分将非常相似,但它们会有轻微的差异(当然).

如果我写了interface一个我设计的每个类都实现了,那么必须完全编写每个abstract方法interface.

如果我编写一个我的base每个设计类派生的类,那么每个类将自动在virtual我在base类中创建的方法中具有一些功能,但是它们都需要被覆盖,调用base功能,包含细微的差异.

有没有办法结合这些功能?我喜欢要求实现interface的方法,但我也喜欢设置由base类预先编程的功能.

我在这里和其他地方看过很多例子,但看起来并没有人像我所描述的那样.它甚至可能吗?

编辑:所以,鉴于此:

abstract class Base
{
    virtual protected void OptionallyOverridable() {}
    abstract protected void SubclassMustImplement();
}
Run Code Online (Sandbox Code Playgroud)

...有没有办法写出这样的东西:

abstract class Base2
{
    DataEventType EventType;
    DataChangedEventHandler OnDataChange;

    virtual protected void OptionallyOverridable() {}
    abstract protected void SubclassMustImplement() {
      // values here are guaranteed
    }
}
Run Code Online (Sandbox Code Playgroud)

All*_*enG 5

C#允许类从基类继承并实现接口,那么为什么不这样做呢?

public interface IFoo
{
    public void Bar();
    public bool Baz();
}

public abstract class BaseFoo : IFoo
{
    //fields/properties used in all classes
    public void Bar()
    { //Implementation }

    public bool Baz()
    { //Implementation }
}

public class DerivedFoo : BaseFoo, IFoo {...}
Run Code Online (Sandbox Code Playgroud)