我在OOP /设计模式方面没有太多经验,下面是我的问题。
我想在解决方案中的所有Visual Studio项目中使用字符串变量的值。 即,我在我的一个C#项目中创建了一个名为strVar的变量。所有其他项目都参考了它。
实际上我想要的是 - 必须计算字符串变量的值 - 一旦加载了Dll(或者第一次访问Class.Variable)而不是每次我访问该变量。
[第一次访问类时 - 我希望计算值并保持 - 在Dll / App域的生命周期内。 ]
即,每次安装应用程序时字符串值都不同 - 并且无法使用.config文件。
有没有办法实现这个目标?
答案 0 :(得分: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
}
}
答案 1 :(得分:0)
考虑使用static constructor。
例如......
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 ...;
}
}
正如文档所说,除其他外,静态构造函数包含此属性:
自动调用静态构造函数来初始化类 在创建第一个实例之前或任何静态成员之前 引用。
答案 2 :(得分:0)
静态构造函数就是答案。一次初始化(当你第一次访问类时),正是你需要的。在静态构造函数中进行初始化。