2013-11-20 4 views
0

У меня есть следующий код, обеспечивающий только один экземпляр браузера для Watin.Синтаксис для объекта singleton

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 является статическим readonly.

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

Вы можете использовать свойство инициализации: 'статическими чтения IE _instance = новый IE {MakeNewIeInstanceVisible = false}; ' – polkduran

+0

Также изучите использование' Lazy _Instance = new Lazy (() => новый IE() {MakeNewIeInstanceVisible = false}); 'затем получить доступ к нему с помощью _Instance.Value', это одна из вещей 'System.Lazy' превосходит. – Seph

ответ

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

Если вы хотите реализовать нить СОХРАНИТЬ синглтон, и вы используете .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; } 
    } 
} 
Смежные вопросы