访问引用应用设置配置文件的常量静态类
本文关键字:常量 静态类 配置文件 设置 引用 应用 访问 | 更新日期: 2023-09-27 18:34:11
我有一个名为LocalConstants的类。
public static class LocalConstants {
public static string DM_PATH = ConfigurationManager.AppSettings["DMQueue"];
public static string PROJECT_PATH = ConfigurationManager.AppSettings["MSQueue"];
}
尝试在我的主程序中访问此类时,我收到空引用异常。ConfigurationManager.AppSettings[ 中的任何内容始终为 null。但是如果我写
//The value is returned fine
string bo=ConfigurationManager.AppSettings["MSQueue"];
这编译正常,但始终为空并抛出 NullRefexception
string moomoo = LocalConstants.PROJECT_PATH;
例外情况是'TestCodeOutOnSide.LocalConstants' 的类型初始值设定项抛出了一个异常。
内部异常是基本的对象引用未设置为对象的实例。
即使我将PROJECT_PATH更改为
public static readonly string PROJECT_PATH = @"FORMATNAME:DIRECT=OS:serus-nickl'RMQDEV";
我得到同样的异常
有什么想法吗?
首先,如果您这样做是为了提供某种性能优势,那么您应该知道这些是缓存的。请参阅配置管理器.应用设置缓存,以删除任何缓存。
其次,问题很可能是静态字段初始化无法按预期方式工作。因此,编写的代码不能保证ConfigurationManager.AppSettings
已运行。 从链接的文章示例代码:
可能会产生以下任一输出:
Init A
Init B
1 1
或输出:
Init B
Init A
1 1
[根据OP评论编辑]
必须涉及其他内容,例如:
public static class LocalConstants
{
public static string DM_PATH = "DMQueue";
public static string PROJECT_PATH = "MSQueue";
}
class Program
{
static void Main(string[] args)
{
string moomoo = LocalConstants.PROJECT_PATH;
Console.WriteLine(moomoo);
}
}
为我工作。
[编辑 2 - 离开那些后来的人]
看起来"SomeClass"的类型初始值设定项抛出了一个异常,这可能是一种情况
但是当 WPF 设计器调用它时,"应用程序"是 Visual Studio,它(可能(在其 .config 文件中没有适当的连接字符串;
该作者的修复是:
将实体数据模型的实例化移动到属性中
为什么不尝试这样的事情:
public static string ProjectPath
{
get
{
return ConfigurationManager.AppSettings["MSQueue"];
}
}
我称之为
public static string Environment = AppEnvironmentVariable.ToUpper() != "PROD" ? "***FROM " + AppEnvironmentVariable.ToUpper() + "** " : "";
在此之前
public static string AppEnvironmentVariable = "DEV";
在 LocalConstants 文件中,由于 Josh 所说的静态字段初始化而破坏了它
你可以
尝试将它们readonly
public static readonly string PROJECT_PATH = ConfigurationManager.AppSettings["MSQueue"];
readonly
字段可以延迟加载