我正在使用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提供给私有静态只读变量?
答案 0 :(得分:1)
您可以将单身实例设为Lazy<T>
。在您尝试访问它之前,这不会实例化。有关更多示例,请look here。
编辑:我刚刚意识到Jon Skeet甚至特意将其称为in his guide。