Подтвердить что ты не робот

Невозможно объявить члены экземпляра в статическом классе в С#

У меня есть public static class, и я пытаюсь получить доступ к appSettings из моего файла app.config на С#, и я получаю ошибку, описанную в заголовке.

public static class employee
{
    NameValueCollection appSetting = ConfigurationManager.AppSettings;    
}

Как мне заставить это работать?

4b9b3361

Ответ 1

Если класс объявлен статическим, все члены также должны быть статическими.

static NameValueCollection appSetting = ConfigurationManager.AppSettings;

Вы уверены, что хотите, чтобы ваш класс сотрудника был статичным? Вы почти наверняка не хотите этого поведения. Вероятно, вам лучше удалить статическое ограничение класса и членов.

Ответ 2

В нем говорится, что это значит:

сделать ваш класс нестатическим:

public class employee
{
  NameValueCollection appSetting = ConfigurationManager.AppSettings;    
}

или элемент static:

public static class employee
{
  static NameValueCollection appSetting = ConfigurationManager.AppSettings;    
}

Ответ 3

Нельзя объявлять член экземпляра в статическом классе. Статический класс не может быть создан, поэтому нет смысла иметь членов экземпляра (они никогда не будут доступны).

Ответ 4

Пробовали ли вы использовать "статический" класс хранения, похожий на?:

public static class employee
{
    static NameValueCollection appSetting = ConfigurationManager.AppSettings;    
}

Ответ 5

Как сказал Джон Уэлдон, все члены должны быть статичными в статическом классе. Попробуйте

public static class employee
{
     static NameValueCollection appSetting = ConfigurationManager.AppSettings;    

}

Ответ 6

public static class Employee
{
    public static string SomeSetting
    {
        get 
        {
            return ConfigurationManager.AppSettings["SomeSetting"];    
        }
    }
}

Объявить свойство как статичное. Кроме того, не беспокойтесь, сохраняя личную ссылку на ConfigurationManager.AppSettings. ConfigurationManager уже является статическим классом.

Если вы чувствуете, что должны хранить ссылку на настройки приложения, попробуйте

public static class Employee
{
    private static NameValueCollection _appSettings=ConfigurationManager.AppSettings;

    public static NameValueCollection AppSettings { get { return _appSettings; } }

}

Хорошая форма всегда дает явный спецификатор доступа (закрытый, общедоступный и т.д.), хотя по умолчанию является приватным.

Ответ 7

Я знаю, что этот пост старый, но...

Я смог это сделать, моя проблема заключалась в том, что я забыл сделать свое свойство статическим.

public static class MyStaticClass
{
    private static NonStaticObject _myObject = new NonStaticObject();

    //property
    public static NonStaticObject MyObject
    {
        get { return _myObject; }
        set { _myObject = value; }
    }
}