Sma*_*art 8 .net c# abstract-class
可能重复:
为什么我不能在抽象C#类上创建抽象构造函数?
我怎样才能编写一个抽象类来告诉子类必须有一个构造函数?
像这样的东西:
public abstract class FatherClass
{
public **<ChildConstructor>**(string val1, string val2)
{
}
// Someother code....
}
public class ChildClass1: FatherClass
{
public ChildClass1(string val1, string val2)
{
// DO Something.....
}
}
Run Code Online (Sandbox Code Playgroud)
如果我不能继承构造函数.我怎样才能防止有人不会忘记实现那个特定的子类构造函数?
Mat*_*lls 19
你不能.
但是,您可以在FatherClass上设置一个构造函数,如下所示:
protected FatherClass(string val1, string val2) {}
Run Code Online (Sandbox Code Playgroud)
这迫使子类调用此构造函数 - 这将"鼓励"它们提供string val1, string val2构造函数,但不强制它.
我认为你应该考虑改为查看抽象工厂模式.这看起来像这样:
interface IFooFactory {
FatherClass Create(string val1, string val2);
}
class ChildClassFactory : IFooFactory
{
public FatherClass Create(string val1, string val2) {
return new ChildClass(val1, val2);
}
}
Run Code Online (Sandbox Code Playgroud)
无论何时需要创建FatherClass子类的实例,都可以使用IFooFactory而不是直接构造.这使您可以授权该(string val1, string val2)签名来创建它们.
| 归档时间: |
|
| 查看次数: |
7621 次 |
| 最近记录: |