单例对象的语法

时间:2013-11-20 12:22:13

标签: c# watin

我有以下代码来确保Watin只有一个浏览器实例。

public sealed class BrowserIE
{

    static readonly IE _Instance = new IE();

    static BrowserIE()
    {
    }

    BrowserIE()
    {
    }

    public static IE Instance
    {
        get { return _Instance; }
    }
}

但我无法弄清楚在这个类中应用设置的位置。如何/在何处将以下设置应用于上述代码,以便它们在

之前生效

Settings.Instance.MakeNewIeInstanceVisible = false;

我知道我可以在一个有效的方法中使用以下内容,但我无法在上面的例子中得到语法,其中_Instance是静态只读。

Settings.Instance.MakeNewIeInstanceVisible = false;
_Instance = new IE();

2 个答案:

答案 0 :(得分:1)

为什么不使用静态构造函数?

public sealed class BrowserIE
{
    static readonly IE _Instance;

    static BrowserIE()
    {
        Settings.Instance.MakeNewIeInstanceVisible = false;
        _Instance = new IE();
    }

    BrowserIE()
    {
    }

    public static IE Instance
    {
        get { return _Instance; }
    }
}

答案 1 :(得分:1)

如果要实现线程保存单例并使用.NET 4.0,则可以使用System.Lazy<T>

public sealed class BrowserIE
{
    private static readonly Lazy<BrowserIE> _singleInstance = new Lazy<BrowserIE>(() => new BrowserIE());

    private BrowserIE() { }

    public static BrowserIEInstance
    {
        get { return _singleInstance.Value; }
    }
}