Есть ли причина, по которой вы используете эту версию, а не более простую, которая просто инициализирует экземпляр в объявлении?
public class Singleton
{
private static Singleton instance = new Singleton();
public static Singleton Instance { get { return instance; } }
// Only use this if you really need it - see the page for details
static Singleton() {}
private Singleton()
{
// I assume this logic varies
}
}
Этот шаблон достаточно короткий, и я не думаю, что онпроблема, чтобы включить это повсюду.
Я хотел бы призвать вас подумать, действительно ли вам нужно столько синглетонов;как правило, они не очень хороши для тестируемости и т. д.
РЕДАКТИРОВАТЬ: Если вы действительно, действительно хотите лени и вы используете .NET 4, вы можете получить его с 6-ым шаблоном, который находится на singletonновый дом страницы :
public sealed class Singleton
{
private static readonly Lazy<Singleton> lazy =
new Lazy<Singleton>(() => new Singleton());
public static Singleton Instance { get { return lazy.Value; } }
private Singleton()
{
}
}