0

我在 OOP / 设计模式方面没有太多经验,下面是我的问题。

我想在解决方案中的所有 Visual Studio 项目中使用字符串变量的值。即,我在我的一个 C# 项目中创建了一个名为 strVar 的变量。并且所有其他项目都参考了它。

实际上我想要的是 - 必须计算字符串变量的值 - 一旦加载了 Dll(或第一次访问 Class.Variable),而不是每次访问该变量时。

[当第一次访问该类时-我希望计算并保留该值-贯穿 Dll / App 域的生命周期。]

即,字符串值在应用程序的每次安装中都会有所不同 - 并且不能使用 .config 文件。

有没有办法做到这一点?

4

3 回答 3

2
public SomePubliclyVisibleClass
{
  private static _strVal = ComputedStrVal();//we could have a public field, but 
                                            //since there are some things that
                                            //we can do with a property that we
                                            //can't with a field and it's a breaking
                                            //change to change from one to the other
                                            //we'll have a private field and
                                            //expose it through a public property
  public static StrVal
  {
    get { return _strVal; }
  }
  private static string ComputedStrVal()
  {
    //code to calculate and return the value
    //goes here
  }
}
于 2012-08-14T23:39:32.667 回答
0

考虑使用静态构造函数

例如...

public class ImportantData
{
    public static string A_BIG_STRING;

    // This is your "static constructor"
    static ImportantData()
    {
        A_BIG_STRING = CalculateBigString();
    }

    private static string CalculateBigString()
    {
        return ...;
    }
}

正如文档所说,除其他外,静态构造函数包含此属性:

在创建第一个实例或引用任何静态成员之前,会自动调用静态构造函数来初始化类。

于 2012-08-14T23:38:04.630 回答
0

静态构造函数就是答案。一次初始化(当您第一次访问类时),正是您所需要的。在静态构造函数中进行初始化。

于 2012-08-15T00:00:15.467 回答