使用变量实例化Singleton

时间:2014-01-27 20:00:18

标签: c# singleton

我正在使用Jon Skeet关于C#中Singletons的精彩指南:

Implementing the Singleton Pattern in C# (第六版 - 使用.NET 4的Lazy类型)

我要做的是创建一个引用类,其中包含整个程序中其他类使用的配置材料。 (设置,主题等......)

该引用类依赖于ClientContext对象(Scope,TenantID等)提供的一些变量

例如,有一个存储在数据库中的设置对象,需要TenancyID来提取当前范围的设置。

如何正确使用Singleton模式,但延迟实例化直到将变量传递给它?

附录

在Jon的例子中,它基于一个无法提供变量的私有静态类来实例化自己。

private static readonly Lazy<Singleton> lazy =
    new Lazy<Singleton>(() => new Singleton());

public static Singleton Instance { get { return lazy.Value; } }

如何将表示TenantID的GUID提供给私有静态只读变量?

1 个答案:

答案 0 :(得分:1)

您可以将单身实例设为Lazy<T>。在您尝试访问它之前,这不会实例化。有关更多示例,请look here

编辑:我刚刚意识到Jon Skeet甚至特意将其称为in his guide