C#don';t重写重写方法

C#don';t重写重写方法,c#,C#,是否有属性或模式告诉编译器不允许重写可重写方法 例如: 车辆 public class Vehicle { public virtual void Start() { } } public class Car : Vehicle { // ################ [DontAllowOverrideAgain] //I need something like this attribute // ################ public o

是否有
属性
模式
告诉编译器不允许重写可重写方法

例如:

车辆

public class Vehicle
{
    public virtual void Start() { }
}
public class Car : Vehicle
{
    // ################
    [DontAllowOverrideAgain] //I need something like this attribute
    // ################
    public override void Start()
    {
        // Todo => codes that every car must invoke before start ...
        CarStart();
        // Todo => codes that every car must invoke after start ...
    }

    public virtual void CarStart() { }
}
public class CoupeCar : Car
{
    // throw and error or show a message to developer
    public override void Start() { }

    public override void CarStart() { }
}
汽车

public class Vehicle
{
    public virtual void Start() { }
}
public class Car : Vehicle
{
    // ################
    [DontAllowOverrideAgain] //I need something like this attribute
    // ################
    public override void Start()
    {
        // Todo => codes that every car must invoke before start ...
        CarStart();
        // Todo => codes that every car must invoke after start ...
    }

    public virtual void CarStart() { }
}
public class CoupeCar : Car
{
    // throw and error or show a message to developer
    public override void Start() { }

    public override void CarStart() { }
}
CoupeCar

public class Vehicle
{
    public virtual void Start() { }
}
public class Car : Vehicle
{
    // ################
    [DontAllowOverrideAgain] //I need something like this attribute
    // ################
    public override void Start()
    {
        // Todo => codes that every car must invoke before start ...
        CarStart();
        // Todo => codes that every car must invoke after start ...
    }

    public virtual void CarStart() { }
}
public class CoupeCar : Car
{
    // throw and error or show a message to developer
    public override void Start() { }

    public override void CarStart() { }
}

当然,只需将第一个覆盖创建为
sealed
,这将导致开发人员可以看到的编译时失败

public class Car : Vehicle
{
    public sealed override void Start()
    {
        // Todo => codes that every car must invoke before start ...
        CarStart();
        // Todo => codes that every car must invoke after start ...
    }

    public virtual void CarStart() { }
}

给你,用密封的

参考文献


非常感谢,我也不知道如何使用方法。