带参数的单例和Lazy <singleton> </singleton>

时间:2013-11-20 11:37:32

标签: c# .net-4.0 singleton

新的Lazy(.Net 4.0)存在问题。 我不明白如何在init传递一些应用程序参数。

这个基本代码运作良好

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

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

    private FactoryHospitalisation()
    {
    }

但是当我尝试添加一些参数时,我不知道如何更新lambda表达式。

    private string _appId;
    private string _siteCode;

    private static readonly Lazy<FactoryHospitalisation> lazy =
    new Lazy<FactoryHospitalisation>(() => new FactoryHospitalisation("""" What kind of parameters get here ?? """"));

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

    private FactoryHospitalisation(string appId, string siteCode)
    {
        _appId = appId;
        _siteCode = siteCode;
    }

我知道如何使用带有锁的旧版本线程安全来实现这一点但如果我了解如何实现新的4.0模式,它会非常酷:)

感谢您的帮助。

编辑:这个类是BindModelToData和反向(EF到模型和模型到EF),我需要从WCF调用一些对象,这个WCF需要正确调用我的应用程序ID和站点代码。 我试图在方法中转换Instance,但我不知道它是否正确。

    private static string _appId;
    private static string _siteCode;

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

    public static FactoryHospitalisation Instance(string appId, string siteCode)
    {
        _appId = appId;
        _siteCode = siteCode;

        return lazy.Value;
    }

    private FactoryHospitalisation()
    {
    }

0 个答案:

没有答案