2016-06-28 8 views
-4

Ich weiß, dass es ein common error ist. Aber ich würde gerne wissen, warum mein Code diesen Fehler gibt.Warum gibt Fehler CS0120

Der VS gibt die CS0120 C# Fehler Eine Objektreferenz für die nicht-statisches Feld, eine Methode oder Eigenschaft

class LoginsAtivosDAO 

     public static List<LoginAtivo> getList() { 
     return contexto.LoginsAtivos.ToList(); 
    } 

class List_Users_Form 

private void atualizaLista() { 
     LoginDao dao = new LoginDao(); 
     List<string> lista = new List<string>(); 
     foreach(LoginAtivo u in LoginsAtivosDao.getList()) { 
      lista.Add(dao.getUsuario(u.UsuarioID).Nome); 
     } 

     listBox1.DataSource = lista; 
    } 
erforderlich ist
+0

Was ist 'contexto.LoginsAtivos' wo es definiert ist? –

+0

es ist ein 'DBContext' und es ist definiert in der Klasse' LoginsAtivosDAO' –

+0

Was verstehst du nicht? Haben Sie die Dokumente gelesen, mit denen Sie verknüpft sind? – Blorgbeard

Antwort

0

Offensichtlich haben Sie eine Klasse LoginsAtivosDAO und eine Variable namens LoginsAtivosDao (sei es ein Rechtschreibfehler oder was auch immer) genannt. Das Element contexto scheint Ihr Problem zu verursachen. Es sollte in Ihrer Klasse statisch sein LoginsAtivosDAO:

class LoginsAtivosDAO 
{ 
    static DBContext contexto = ...; 

    public static List<LoginAtivo> getList() 
    { 
     return contexto.LoginsAtivos.ToList(); 
    } 
} 

class List_Users_Form 
{ 
    private void atualizaLista() { 
     LoginDao dao = new LoginDao(); 
     List<string> lista = new List<string>(); 
     foreach(LoginAtivo u in LoginsAtivosDao.getList()) { 
      lista.Add(dao.getUsuario(u.UsuarioID).Nome); 
     } 
     listBox1.DataSource = lista; 
    }  
} 
1

wie contexto.LoginsAtivos Sieht ist ein nicht-statisches Feld/Objekt und Sie versuchen, auf sie innerhalb einer statischen Methode zuzugreifen. Eine solche Operation ist nicht erlaubt. Was können Sie dies auf zwei Arten umgehen:

  1. static Schlüsselwort aus der Methodensignatur entfernen:

    public List<LoginAtivo> getList() 
    { 
        return contexto.LoginsAtivos.ToList(); 
    } 
    
  2. Make contexto.LoginsAtivos als statisch.

Hinweis: Wenn Sie einige Zeit verbringen die attached link auf die Frage zu lesen, dann wird diese Frage nicht erhöhen. Die Antwort wird dort klar angegeben als "Um ein nicht statisches Feld, eine Methode oder eine Eigenschaft zu verwenden, müssen Sie zuerst eine Objektinstanz erstellen."

+0

Der obige Code zeigt den einzigen Aufruf, den ich für die Funktion getList() dieser Klasse mache. Theoretisch ändere ich nicht die Variable –

+0

@VictorHenrique: haben Sie versucht, die statische von der Methodensignatur zu entfernen? –

+0

Ja. Aber ich will immer noch wissen warum der Grund des Fehlers. –

Verwandte Themen