Sam*_*tar 1 c# inheritance base-class
我有一个基类看起来像这样:
public class BaseController : Controller {
}
Run Code Online (Sandbox Code Playgroud)
继承这个的类:
public class ABC : BaseController {
public void Create(string a, string b) {
var Meta = new Meta();
Meta.Title = "test";
}
}
public class DEF : BaseController {
public void Create(string a, string b, string c) {
var Meta = new Meta();
Meta.Title = "job";
}
}
Run Code Online (Sandbox Code Playgroud)
从BaseController继承的每个类都需要创建一个Meta()实例;
有没有什么方法可以将这个创建从ABC和DEF类转移到基本控制器?请注意,ABC,DEF等类中的某些方法具有不同数量的参数.
我对此有一个想法是在BaseController中执行以下操作:
public Meta Meta { get; set; }
protected override void Initialize(RequestContext requestContext)
{
if (Meta == null) { Meta = new Meta(); }
}
Run Code Online (Sandbox Code Playgroud)
这是一件有效的事吗.此外,如果我在BaseController中执行此操作,那么字段Meta是否可以在从BaseController继承的类中使用?
我可能会像下面这样做.是的,如果你定义它受保护(或当然是公共),你可以访问元.
public class BaseController : Controller {
protected Meta meta;
public void Create() {
meta = new Meta();
}
}
public class ABC : BaseController {
public void Create(string a, string b) {
base.Create();
}
}
public class DEF : BaseController {
public void Create(string a, string b, string c) {
base.Create();
}
}
Run Code Online (Sandbox Code Playgroud)