С текстом ошибки я думаю, что линии вы показываете некоторые члены класса декларации, то есть код выглядит следующим образом:
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");
}
}
'Должен ли я использовать функцию GET?' Похоже, вы уже ответили на свой вопрос. – Servy
Вы не видите контекста, но 'setIO' представляется членом экземпляра, а' To' является членом 'static'. Вы не можете ссылаться на 'setIO' в' static' метод или член (то есть именно то, что сообщение об ошибке), потому что у вас нет экземпляра объекта. – crashmstr
'public static string To = new SettingsIO(). ReadSetting (" ErrorEmails ");'? – abatishchev