无法从应用配置引用变量
本文关键字:引用 变量 配置 应用 | 更新日期: 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");
}
}