这是我尝试运行的代码:
JObject configInfo = JObject.Parse(File.ReadAllText("config.json"));
const string ServerName = (string)configInfo["servername"];
看起来很简单,但我一直收到这个错误:
字段初始值设定项无法引用非静态字段,方法或属性' AdminTools_Admin_ManageElements.configInfo'
有人能告诉我这里发生了什么吗?
答案 0 :(得分:2)
错误意味着您在类级别执行此操作,作为初始化该类中字段的一部分:
class SomeClass
{
JObject configInfo = JObject.Parse(File.ReadAllText("config.json"));
const string ServerName = (string)configInfo["servername"];
}
错误告诉您的是,您无法初始化字段,具体取决于此类其他字段的初始化。 (而你肯定无法从运行时动态值创建常量。)
这可能是在方法内部做的事情。反对从构造函数中的文件读取一段时间的潜在论据,请考虑这样的事情:
class SomeClass
{
JObject configInfo;
string ServerName;
public SomeClass()
{
configInfo = JObject.Parse(File.ReadAllText("config.json"));
ServerName = (string)configInfo["servername"];
}
}
基本上,您尝试在类的定义中放置过多的动态逻辑,其中逻辑需要在类的操作中发生。定义只是结构。解析输入和动态设置值之类的事情都发生在方法中。