访问引用应用设置配置文件的常量静态类

本文关键字:常量 静态类 配置文件 设置 引用 应用 访问 | 更新日期: 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字段可以延迟加载