无法从 App.config 引用变量

Can't reference a variable from App.config

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

App.config:

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

代码:

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

错误为:

A field initializer cannot reference the non-static field, method, or preperty 'test.setIO'.

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

使用 system.configuration class.

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

根据错误文本,我猜你显示的行是一些 class 成员声明,​​即代码如下所示:

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

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

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

为了让它工作,你必须把两个成员都设为静态(如果你把它们都设为非静态,它就不会工作,但你可以在 class 构造函数中初始化它们,在这种情况下) :

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");
    }
}