将参数传递给惰性单例 GetInstance

liv*_*hak 6 c# lazy-evaluation

我正在使用该.NET 4's Lazy<T> type方法来创建单例实例。但我想将配置文件的三个文件路径传递给Instance返回单例的属性

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()
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

Mic*_*ruk 5

你能和我们分享一下你的班级需要单例的原因吗?也许您可以使用 IoC 容器,在这种情况下,您可以确保 IoC 设置中只有您的类的一个实例。

如果你真的想使用单例,也许可以考虑添加一些 init/config 方法。您的单例必须在访问实例之前进行初始化(如果不是,则抛出异常)。我不喜欢这个解决方案,因为 Singleton 类的用户需要以某种方式了解 init 步骤。