C#抽象类无法创建实例

问题描述 投票:-3回答:2

我有一个抽象类ControllerBase,在公共文件夹中有一个公共密封类People。我想在密封的班级中称这个ShowSuccessMessage,但我收到一个错误。

这是打电话给密封班级的正确方法吗?

密封类:

    Controllers controller = new ControllerBase();
    controller.ShowSuccessMessage("Error");

ControllerBase

    public abstract class ControllerBase : Controller
    {       
[Dependency] 
        public Helper Helper { get; set; }
        public void ShowSuccessMessage(string message, bool session = false)
        {
            ShowAlertMessage(message, Messages.Success, session);
        }
    }

可以调用ShowSuccessMessage的不同控制器:

public class EditorController : ControllerBase
c# abstract-class
2个回答
3
投票

You may want to look this article over

简短的版本是抽象类的要点是定义类将执行的操作的蓝图,其他具体类将实现它们。这样,您就知道AbstractClass类型的所有内容都具有相同的定义,即使它们需要不同的行为。

根据定义,您无法实例化它们 - 您需要定义继承您的抽象基类的类,然后实例化THAT。这就是为什么TemplateEditorController可以调用该方法 - 它继承了抽象类,但本身并不是抽象的。继续遵循这种模式。

// Cannot instantiate
public abstract class ClassOne
{

    public abstract void DoThing();

}


// can instantiate
public class ImplementationClassOne : ClassOne
{

    public abstract override void DoThing()
    {

    // insert code here

    }

}

4
投票

如果一个类无法创建实例,则定义抽象类。这不会起作用。您可以使类非抽象,使用它的子类或不同的类。

© www.soinside.com 2019 - 2024. All rights reserved.