Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从同一解决方案中的不同项目访问和修改同一个单例_C# - Fatal编程技术网

C# 从同一解决方案中的不同项目访问和修改同一个单例

C# 从同一解决方案中的不同项目访问和修改同一个单例,c#,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 Si

我有一个单身汉,看起来像这样:

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; }
}
公共密封类单例
{
私有静态只读惰性=
新的懒惰(()=>newsingleton());
公共静态单例实例{get{return lazy.Value;}}
私人单身人士()
{
}
公共int字段1{get;set;}
公共字符串字段2{get;set;}
}
作为参考,我从(第六版)中取了它

这个单例有几个字段,如示例所示,我的解决方案有两个项目<代码>字段1正在由项目1修改,而
字段2正在由项目2修改。project1是一个API,project2是一个调用此API的控制台应用程序。Singleton用于将两个项目的日志数据存储在同一个位置


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

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

什么是project1和project2?单独的可执行文件?还有别的吗?单例并不是宇宙中唯一存在的东西,每个进程都存在一个。@SamiKuhmonen project1是一个API,project2是一个调用此API的控制台应用程序。Singleton用于将两个项目的日志数据存储在同一个位置。因此,您将project2作为控制台应用程序运行,它直接引用并调用project1中的方法(即,在同一个过程中)?而这个单件在project1中?@JoeSewell是的,没错,尽管我认为它们只是两个不同的过程,这就是为什么我不能到达单件的原因。我不会那么确定,仅仅因为这不起作用,你就必然有两个过程,而不是有意的。你能展示一下你的控制台应用程序是如何调用API的吗?我明白。有办法解决这个问题吗?也许有一个不同的解决方案,不是单一的?你能分享更多关于你的设置细节吗?我一定很乐意help@jgozal数据库。。。一个文件。。。因为这是一个API,所以请尝试在控制台应用程序中请求singleton的数据。@Jasen我想这将是一种方法,只需通过API@jgozal,如果您在单个进程中运行,并且仍然需要维护公共状态,则有两个选项:1。使用外部存储(文件、数据库等)和2。考虑编组和与静态对象的代理一起工作…