我有一个抽象类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
答案 0 :(得分:4)
抽象类的定义(如果您不能创建其实例)。这只是行不通的。您可以使该类成为非抽象类,可以使用其子类,也可以使用其他类。
答案 1 :(得分: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
}
}