在同一解决方案中访问和修改来自不同项目的相同单例

时间:2018-03-10 19:53:40

标签: c#

我有一个看起来像这样的单身人士:

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()
    {
    }

    public int field1 { get; set; }
    public string field2 { get; set; }
}

作为参考,我从here(第六版)中获取了它。

这个单例有几个字段,如示例所示,我的解决方案有2个项目。项目1正在修改field1,项目2正在修改field2 .project1是API,而project2是调用此API的控制台应用程序。 Singleton用于存储来自同一地点的两个项目的日志数据。

问题在于,当项目2访问field2时,field1将恢复其默认值,就好像单例已经再次实例化一样。我已经尝试过上面引用的网站中的其他示例,但是没有用。我希望field1在我的程序访问项目2中的field2时获得项目1分配的值。

1 个答案:

答案 0 :(得分:1)

您所指的项目似乎正在不同的AppDomain中执行。甚至可能是不同的流程。静态应用程序域的范围,因此从不同的AppDomain引用单例显然会导致创建新的静态实例。