从基类中继承的单例类,它在构造函数中获取参数?

时间:2009-08-17 23:59:50

标签: c# inheritance parameters singleton

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;
        }
    }
}

这种继承是否可行,基类需要带参数的构造函数? (上面的代码显然不会编译,因为没有参数传递给基类。)

如果是的话,它是如何完成的?

3 个答案:

答案 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'完全使模式的整个概念无效,这通常不恰当地用于开始。

静态构造函数不接受参数,因此将它们传递给基类的唯一方法是通过构造函数链接,但我很确定你不能从静态构造函数中调用实例构造函数......

你到底想做什么?