无法从应用配置引用变量

本文关键字:引用 变量 配置 应用 | 更新日期: 2023-09-27 17:56:58

我正在尝试在我的 C# 文件中引用 App.config 中的一个变量。这是我的代码示例。

应用配置:

<appSettings>
    <add key="ErrorEmails" value="fakeCompany@fakeCompany.com"/>
</appSettings> 

法典:

SettingsIO setIO = new SettingsIO();
public static string To = setIO.ReadSetting("ErrorEmails");

错误如下:

字段

初始值设定项不能引用非静态字段、方法或预置"test.setIO"。

我应该使用GET函数吗?我做错了什么?

无法从应用配置引用变量

使用 system.configuration 类。

string str = System.Configuration.ConfigurationManager
                                 .AppSettings["someAppSetting"]
                                 .ToString();

从错误文本中,我猜你显示的行是一些类成员声明,即代码看起来像这样:

class MyAwesomeClass
{
    SettingsIO setIO = new SettingsIO();
    public static string To = setIO.ReadSetting("ErrorEmails");
}

请注意,To是静态成员,而setIO不是。

错误消息非常清楚地告诉您,您不能引用非静态成员进行成员初始化。静态成员是在程序启动时创建的,而非静态成员仅在创建类的实例时创建,因此当不存在类的实例时,无法访问非静态成员。

为了使它工作,你必须使两个成员都是静态的(如果你使两个成员都成为非静态的,它将不起作用,但在这种情况下,你可以在类构造函数中初始化它们):

class MyAwesomeClass
{
    static SettingsIO setIO = new SettingsIO();
    public static string To = setIO.ReadSetting("ErrorEmails");
}

class MyAwesomeClass
{
    SettingsIO setIO;
    public string To {get; private set; } // don't make members public, use auto-properties instead
    public MyAwesomeClass
    {
        setIO = new SettingsIO();
        To = setIO.ReadSetting("ErrorEmails");
    }
}