我试图在我的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");
错误如下:
字段初始值设定项不能引用非静态字段,方法或属性&#39; test.setIO&#39;。
我应该使用GET
功能吗?我做错了什么?
答案 0 :(得分:3)
使用system.configuration
类。
string str = System.Configuration.ConfigurationManager
.AppSettings["someAppSetting"]
.ToString();
答案 1 :(得分:1)
从错误文本中我会猜到你显示的行是一些类成员声明,即代码如下所示:
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");
}
}