public class BaseFoo
{
private string param;
public BaseFoo(string param)
{
this.param = param;
}
}
public sealed class SingletonFoo : BaseFoo
{
static readonly SingletonFoo instance = new SingletonFoo();
static SingletonFoo()
{
}
public static SingletonFoo Instance
{
get
{
return instance;
}
}
}
这种继承是否可行,基类需要带参数的构造函数? (上面的代码显然不会编译,因为没有参数传递给基类。)
如果是的话,它是如何完成的?
答案 0 :(得分:2)
您需要创建一个实例构造函数,然后引用它:
public sealed class SingletonFoo : BaseFoo
{
static readonly SingletonFoo instance = new SingletonFoo("Some Value");
static SingletonFoo()
{
}
private SingletonFoo(string value) : base(value)
{
}
// ...
这将允许您在内联构造函数中声明参数,并将其调用到链中。
答案 1 :(得分:1)
您使用'base'关键字:
public SingletonFoo (string param) : base(param)
{
}
答案 2 :(得分:1)
我很确定从非单例基类派生的'singleton'完全使模式的整个概念无效,这通常不恰当地用于开始。
静态构造函数不接受参数,因此将它们传递给基类的唯一方法是通过构造函数链接,但我很确定你不能从静态构造函数中调用实例构造函数......
你到底想做什么?