在同一解决方案中的项目之间共享变量

Share variables between projects in the same solution

我有一个解决方案和两个项目。我想共享从 project1 到 project2 的变量,反之亦然。我怎样才能做到这一点? 也许使用静态 class 但我不知道如何处理它。

如果您有多个对象在寻找相同的数据,并且该数据需要限制在单个实例中,那么 Singleton 适合您。

public class AppSingleton
{
// Private static reference to the long instance of this
// Singleton.  
private static readonly AppSingleton _instance = new AppSingleton();

// Current state of the application.
private State _state = State.Start;

public State State => _state;

// Private constructor ensures that only the Singleton
// can create new instances.
private AppSingleton() { }

public AppSingleton Instance => _instance;
} 

如果你想要共享常量,你可以添加一个共享项目并将共享项目引用到project1和project2中。共享项目中的代码(具有常量成员的静态 class)链接到其他项目:

public static class Constants
{
    const string AppName = "AppName";
    const string AppUrl = "http://localhost:1234/myurl";
    const int SomethingCount = 3;
}

如果您想共享运行时变量(具有动态值),您可以添加一个 Class 库或一个 PCL 并将其引用到 project1 和 project2 中。 Class 库中的代码将编译成 DLL 并在其他项目之间共享。您可以使用静态成员创建一个 class 并通过这种方式共享您的运行时变量:

public static class RuntimeValues
{
    public static string AppName { get; set; }
    public static string AppUrl { get; set; }
    public static int SomethingCount { get; set; }
}

在您的项目 1 和项目 2 中,您可以执行以下操作:

var appName = Constants.AppName;

或:

RuntimeValues.AppName = "AppName";
var appName = RuntimeValues.AppName;