无法从 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");
}
}
我试图在我的 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");
}
}