gpt4 book ai didi

c# - 访问引用应用程序设置配置文件的常量静态类

转载 作者:可可西里 更新时间:2023-11-01 09:13:08 27 4
gpt4 key购买 nike

我有一个名为 LocalConstants 的类....

 public static class LocalConstants {
public static string DM_PATH = ConfigurationManager.AppSettings["DMQueue"];
public static string PROJECT_PATH = ConfigurationManager.AppSettings["MSQueue"];
}

当尝试在我的主程序中访问此类时,出现空引用异常。 ConfigurationManager.AppSettings[ 中的任何内容始终为空。但是如果我写

  //The value is returned fine 
string bo=ConfigurationManager.AppSettings["MSQueue"];

这可以正常编译,但始终为 null 并抛出 NullRefexception

   string moomoo = LocalConstants.PROJECT_PATH;

异常(exception)是“TestCodeOutOnSide.LocalConstants”的类型初始值设定项引发异常。

innerException 是基本的对象引用未设置到对象的实例。

即使我将 PROJECT_PATH 更改为

public static readonly string PROJECT_PATH = @"FORMATNAME:DIRECT=OS:serus-nickl\RMQDEV";

我得到了同样的异常

有什么想法吗?

最佳答案

首先,如果您这样做是为了提供某种性能优势,那么您应该知道这些已被缓存。参见 ConfigurationManager.AppSettings Caching , 删除任何。

第二个问题很可能是Static field initialization无法按您的预期工作。因此,您编写的代码无法保证 ConfigurationManager.AppSettings 已运行。来自链接文章示例代码:

might produce either the output:

Init A
Init B
1 1

or the output:

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 - 那些后来者]

看起来像The type initializer for ‘SomeClass’ threw an exception可能是这样的情况

But when it's called by the WPF designer, the "application" is Visual Studio, which (presumably) doesn't have the appropriate connection strings in its .config file;

该作者的修复是:

moving the instantiation of my Entity Data Model into a property

关于c# - 访问引用应用程序设置配置文件的常量静态类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10606899/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com