我有一个抽象类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
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
}
}
如果一个类无法创建实例,则定义抽象类。这不会起作用。您可以使类非抽象,使用它的子类或不同的类。