【发布时间】:2020-04-25 10:56:15
【问题描述】:
静态类是否可以使用来自不同命名空间的另一个静态类中设置的值来初始化它的一些成员?有没有规定他们建立的顺序?
例如
namespace Utility
{
using Config;
public static class Utility
{
public static UtilityObject myUtil = new UtilityObject(ConfigContext.myValue)
}
}
...
// somewhere in a different file/project
...
namespace Config
{
public static class ConfigContext
{
public static string myValue => ConfigurationManager.AppSettings["key"];
}
}
这是我试图完成的基本模式的简化示例;我想获取加载到 static class ConfigContext 的配置文件中的值,并使用它们来初始化 static class Utility 的成员。
【问题讨论】:
-
将
using namespace_two语句移到namespace_one块之外,您的代码应该可以工作。 -
我不知道您为什么要这样做,但至少对我来说,这是一种代码味道。寻求“决定他们建立的顺序”表明了时间依赖性。那有什么意思?尝试使用静态类实例时会创建它们。
-
是的,这是我正在尝试做的一个超级简化的示例,但核心概念是相同的。基本上我想使用加载到静态 ConfigContext 的配置文件中的值来初始化静态实用程序类的成员。
-
太棒了。谢谢你。我看不到问题所在。看起来它应该可以工作,尽管我不推荐这种模式。不是很可单元测试。
-
顺便说一句,如果不是很明显,我不是静态类的忠实粉丝... :-P
标签: c# asp.net static-classes