我有一个看起来像这样的单身人士:
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分配的值。
答案 0 :(得分:1)
您所指的项目似乎正在不同的AppDomain中执行。甚至可能是不同的流程。静态应用程序域的范围,因此从不同的AppDomain引用单例显然会导致创建新的静态实例。