静态属性获胜';不要固步自封

本文关键字:固步自封 属性 获胜 静态 | 更新日期: 2023-09-27 18:22:05

我想在同一解决方案中的两个项目之间共享一个属性,所以我在一个单独的(第三个)项目中创建了一个具有静态属性的简单静态类。然而,当我在一个项目中设置它时,当我试图从另一个项目获取属性的值时,似乎不会发生更改。

既然属性是静态的,难道不应该只有一个实例吗?我已经调试过了,这个值确实是在赋值语句之后设置的,为什么在其他项目中引用它时不应用呢?这是代码:

    namespace Shared
    {
        public static class Shared
        {
           public static string old { get; set; }
        }
    }

第一个项目中的任务说明

   Shared.Shared.old = messageData.Items[0].DateTime;

正在尝试访问第二个项目中的属性

    if (messageData.Items[0].DateTime.CompareTo(Shared.Shared.old) > 0)

静态属性获胜';不要固步自封

静态属性每个进程有一个实例(从技术上讲,每个AppDomain)。如果您试图在两个可执行文件之间共享它,则每个进程都将获得一个唯一的值。

如果您想在两个可执行文件之间进行通信,则需要使用某种形式的进程间通信,或者序列化到某个外部源(文件系统、数据库等)。