从c#中的抽象继承

Inheritance from abstract in c#

我有一个class:

public abstract BaseClass
{
    public RequestType MethodOne(Request request)
    {
        // some work here with objectOne
        return PostMethodOne(objectOne);
    }
    public abstract RequestType PostMethodOne(Request request);
}

然后我从 base class:

ihnerit
public class ChildClass : BaseClass
{
    public override PostMethodOne(Request request)
    {
     // some work with request
        return request;
    }
}

是否调用了 methodOne,然后我可以在通过 methodOne 后处理 PostMethod 上的请求? 我必须打电话给 base.MethodOne 吗?

MethodOne 不是抽象的或虚拟的,这意味着它只是被 ChildClass 继承。

POstMethodOne 是抽象的,因此您必须在 ChildClass 中实现它。来电者这样做:

var myInstance = new ChildClass();
myInstance.MethodOne();

将从 BaseClass 调用 MethodOne,后者又调用 PostMethodOne - 这是抽象的并在 ChildClass 中实现 - 将自动调用。

This is a pretty common pattern,你可能只犯了一个错误 - POstMethodOne 应该是 protected 而不是 public.