C# 在多项目解决方案中共享变量

C# 在多项目解决方案中共享变量,c#,.net,visual-studio-2010,outlook-addin,C#,.net,Visual Studio 2010,Outlook Addin,我正在使用C#在VS2010中为Outlook 2010创建一个解决方案,该解决方案由3个项目组成 项目A-B&C依赖于此。它定义了需要从B&C访问的某些变量/函数 项目B-需要从A读取变量 项目C-需要从数据库中读取变量 我还没走多远,因为我似乎无法将变量从A读入B或C。我添加了A作为B和C的引用,但将其中一个局部变量赋值给A的值只会导致空值(我知道这不是真的) 进一步澄清: 这是一组3个outlook加载项 项目的外接程序A(其他程序依赖于此)调用某些函数,并将B&C需要的信息拉入其中

我正在使用C#在VS2010中为Outlook 2010创建一个解决方案,该解决方案由3个项目组成

  • 项目A-B&C依赖于此。它定义了需要从B&C访问的某些变量/函数
  • 项目B-需要从A读取变量
  • 项目C-需要从数据库中读取变量
我还没走多远,因为我似乎无法将变量从A读入B或C。我添加了A作为B和C的引用,但将其中一个局部变量赋值给A的值只会导致空值(我知道这不是真的)

进一步澄清:

这是一组3个outlook加载项

  • 项目的外接程序A(其他程序依赖于此)调用某些函数,并将B&C需要的信息拉入其中
  • B&C由一整套功能组成,每个功能都取决于a收集的信息。B&C双方的信息必须始终相同

    • 您可能需要通过一些代码。但无论如何,请确保项目A是一个类库。它应该简单到:

      项目A

      namespace A
      {
           public class AClass  // note, this is **public**
           {
               // ctor
               public AClass { }
               public void AMethod { }
           } 
      }
      
      项目B(有A作为参考)


      在projectC

      中也会有类似的内容,您可能需要通过一些代码。但无论如何,请确保项目A是一个类库。它应该简单到:

      项目A

      namespace A
      {
           public class AClass  // note, this is **public**
           {
               // ctor
               public AClass { }
               public void AMethod { }
           } 
      }
      
      项目B(有A作为参考)


      在projectC

      中也会有类似的内容,始终确保公共方法、属性、字段等的名称指示不同的上下文,以避免使用和维护混淆

      例如,具有数十个项目的单个解决方案不应具有相同名称的属性:

      项目A:public int ThisValue{get;set;}->ProjAThisValue 项目B:public int ThisValue{get;set;}->ProjBThisValue


      如果不这样做,就会产生引用噩梦。

      始终确保公共方法、属性、字段等名称指示不同的上下文,以避免使用和维护混乱

      例如,具有数十个项目的单个解决方案不应具有相同名称的属性:

      项目A:public int ThisValue{get;set;}->ProjAThisValue 项目B:public int ThisValue{get;set;}->ProjBThisValue


      如果不这样做,就会产生引用噩梦。

      除了访问修饰符(内部/私有/受保护与公共)之外,绝对没有任何东西会阻止项目C读取A和B变量。A中的变量实际上是空的。没有其他可能性。最有可能的是,您的代码在使用变量之前没有将值分配给变量。在何处/何时分配变量中的值?“读取变量”肯定表明您不了解面向对象编程。如果你给出更多关于你想要完成什么的细节(而不是你认为你应该如何完成它),那么你可能会得到一些好的建议。一句澄清的话。每个过程的变量是独立的。因此,如果运行B,它在a中设置变量,然后在单独的进程中运行C,那么它将无法读取B设置的值。相反,它将拥有自己的变量值集,完全独立于其他进程的值。即使您运行同一个可执行文件两次,这也是正确的。除非为进程间通信提供更复杂的机制,否则进程之间不会相互影响。@John-我对OOP有一定的了解,但已经离开编程世界大约15年了,去年又回到了编程世界,我仍在恢复我的技能。我可以给出细节,但说这是我不理解的“肯定的迹象”是没有建设性的。@John-不是每个人都是专业的程序员,我的工作中除了编程还有很多其他任务,当我的基础程序是C++的15年前,我没有时间去学习C的每一个方面。绝对没有什么能阻止C项目读取A和BS变量,除了访问修饰符(内部/私有/保护vs公共)。A中的变量实际上是空的。没有其他可能性。最有可能的是,您的代码在使用变量之前没有将值分配给变量。在何处/何时分配变量中的值?“读取变量”肯定表明您不了解面向对象编程。如果你给出更多关于你想要完成什么的细节(而不是你认为你应该如何完成它),那么你可能会得到一些好的建议。一句澄清的话。每个过程的变量是独立的。因此,如果运行B,它在a中设置变量,然后在单独的进程中运行C,那么它将无法读取B设置的值。相反,它将拥有自己的变量值集,完全独立于其他进程的值。即使您运行同一个可执行文件两次,这也是正确的。除非为进程间通信提供更复杂的机制,否则进程之间不会相互影响。@John-我对OOP有一定的了解,但已经离开编程世界大约15年了,去年又回到了编程世界,我仍在恢复我的技能。我可以给出细节,但说这是一个“肯定的征兆”,我不理解是不具有建设性的。“约翰-不是每个人都是一个专家程序员,而且除了我的工作之外还有很多其他任务,我在15年前的基础程序是C++的时候没有时间去学习C的每一个方面。“我将其作为Outlook加载项编写,其中一些变量需要在启动时初始化。我是否应该像现在这样将A作为外接程序编写?如果A只是一个类库,那么不,它不应该是外接程序。如果B&C是实际的外接程序,则是。他们可以使用A cl