在不同的DLL之间共享变量但在同一进程/ EXE中

时间:2012-03-23 14:20:48

标签: c# dll process

我在DLLA中声明了一个静态变量,我想从另一个DLLB访问

如何在同一进程中运行的两个DLL之间共享变量?

问题是:在以下代码中无法检索localB变量。如何在Main方法中读取变量B?

  • DLLA

    namespace A
    {
    public class ProgramA
    {
    
    public static string variableA = "John";
    public static void Main(string[] args)
    {
    
        b.Program.variableB = variableA;
    }
    
  • DLLB

    namespace b
     {
     public class Program
      {
        public static string variableB;
        public static void Main(string[] args)
       {
           string localB = variableB;
       }
    

2 个答案:

答案 0 :(得分:1)

如果DLL2具有对DLL1的引用,则只需将该变量(以及包含它的类)标记为public

答案 1 :(得分:1)

在第一个DLL(First.DLL)

namespace MyGlobalVar
{
    public static class MyAppVars
    {
        public static string UserName;
    }
}

在第二个DLL(Second.DLL)引用First.DLL中,然后使用as:

using MyGlobalVar
....

MyAppVars.UserName = "John";