Невозможно получить доступ к нестатическому полю [fieldname] в статическом контексте

Базовый класс:

public class DatabaseBase
{
  private readonly string connectionString;
  private bool useCounters;

  public DatabaseBase(string connectionString)
  {
   this.connectionString = connectionString;
  }

  public DatabaseBase(...)
  {
   connectionString = ...;   
  }

  public DatabaseBase(..)
  {
   connectionString = string.Format(...);
  }

  public string ConnectionString
  {
   get { return this.connectionString; }
  }

...

Производный класс:

public class ProjectDB : DatabaseBase
{
private bool useServiceConnection;

 private static string ConnectionString
 {
     get
     {
        string connectionString = useServiceConnection == true ? ConfigurationManager.AppSettings["SomeConnection1"] : ConfigurationManager.AppSettings["SomeConnection2"];
         return connectionString;
     }
 }


public ProjectDB() : this(false)
{
}

 private bool isServiceCall;

public ProjectDB(bool useServiceConnection)
    : base(ConnectionString)
{
    this.useServiceConnection = useServiceConnection;
}

private SqlConnection CreateConnection()
{
    return new SqlConnection(ConnectionString);
}

Я получаю сообщение об ошибке «Не удается получить доступ к нестатическому полю useServiceConnection в статическом контексте» для этой строки:

string connectionString = useServiceConnection == true ? ConfigurationManager.AppSettings["SomeConnection1"] : ConfigurationManager.AppSettings["SomeConnection2"];

Однако, если я сделаю useServiceConnection статической переменной, чтобы удовлетворить это требование, я получу ту же ошибку в конструкторе:

public ProjectDB(bool useServiceConnection)
    : base(ConnectionString)
{
    this.useServiceConnection = useServiceConnection;
}

Теперь, если я сделаю свойства useServiceConnection и ConnectionSting нестатичными, я получу эту ошибку для конструктора:

public LitleDB(bool useWebServiceConnection)
    : base(ConnectionString)
{
    this.useWebServiceConnection = useWebServiceConnection;
}

Я думаю, что первые 2 я понимаю.

Но теперь, с примером, обновленным ниже, почему конструктор в этом случае все еще дает мне ошибку? Они больше не статичны, так откуда же ожидается статический контекст? Итак, вот что у меня сейчас:

public class ProjectDB : DatabaseBase
 {
    private bool useServiceConnection; <-- NO LONGER STATIC

     private new string ConnectionString <-- NO LONGER STATIC
     {
         get
         {
            string connectionString = useServiceConnection == true ? ConfigurationManager.AppSettings["SomeConnection1"] : ConfigurationManager.AppSettings["SomeConnection2"];
             return connectionString;
         }
     }

    public ProjectDB() : this(false)
    {
    }

     private bool isServiceCall;

    public ProjectDB(bool useServiceConnection)
        : base(ConnectionString)  <--- IT'S COMPLAINING HERE NOW, SO WHERE IS IT TRYING TO ACCESS STATICALLY?  I DON'T GET WHY
    {
        this.useServiceConnection = useServiceConnection;
    }

У меня есть другие статические свойства в этом классе, это как-то связано с этим? Я не использую их все же.

Ответы на вопрос(4)

Ваш ответ на вопрос