2 Stimmen

Mehrdeutigkeit zwischen Klassenvariablen

Ich baue gerade ein System auf, in dem ich einige Klassen habe, die mit dieser identisch sind:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

/// <summary>
/// Class to handle operations at Status table
/// </summary>
public class Status
{
    #region Vars and Class Objects
    protected Dados d;
    protected string sql;
    protected Logs log;
    protected Permissoes p;
    protected List<string> Mensagens;
    #endregion

    #region Constructor e Destructor
    public Status()
    {
        d = new Dados();
        log = new Logs();
        p = new Permissoes();
        Mensagens = new List<string>();
    }

    ~Status()
    {
        d = null;
        p = null;
        log = null;
        sql = null;
    }
    #endregion
}

(Klassenprotokolle und Klassenerlaubnisse haben eine ähnliche Codestruktur).

Im obigen Code werden die folgenden Fehler von VS2010 IDE, für alle Deklarationen innerhalb Konstruktor angezeigt:

Error                                                           File            Line    Col             
Ambiguity between 'Status.d' and 'Status.d'                     Status.cs       22      9
Ambiguity between 'Status.log' and 'Status.log'                 Status.cs       23      9
Ambiguity between 'Status.p' and 'Status.p'                     Status.cs       24      9
Ambiguity between 'Status.Mensagens' and 'Status.Mensagens'     Status.cs       25      9
Ambiguity between 'Status.d' and 'Status.d'                     Prioridades.cs  21      9
Ambiguity between 'Status.p' and 'Status.p'                     Prioridades.cs  22      9
Ambiguity between 'Status.log' and 'Status.log'                 Prioridades.cs  23      9
Ambiguity between 'Status.d' and 'Status.d'                     Prioridades.cs  28      3
Ambiguity between 'Status.p' and 'Status.p'                     Prioridades.cs  29      9
Ambiguity between 'Status.log' and 'Status.log'                 Prioridades.cs  30      9
Ambiguity between 'Status.sql' and 'Status.sql'                 Prioridades.cs  31      9
Ambiguity between 'Status.p' and 'Status.p'                     Prioridades.cs  45      18
Ambiguity between 'Status.sql' and 'Status.sql'                 Prioridades.cs  53      5
Ambiguity between 'Status.d' and 'Status.d'                     Prioridades.cs  54      5
Ambiguity between 'Status.log' and 'Status.log'                 Prioridades.cs  58      17
Ambiguity between 'Status.p' and 'Status.p'                     Prioridades.cs  78      18
Ambiguity between 'Status.sql' and 'Status.sql'                 Prioridades.cs  86      17
Ambiguity between 'Status.d' and 'Status.d'                     Prioridades.cs  87      17
Ambiguity between 'Status.log' and 'Status.log'                 Prioridades.cs  88      17
Ambiguity between 'Status.p' and 'Status.p'                     Prioridades.cs  106     18
Ambiguity between 'Status.sql' and 'Status.sql'                 Prioridades.cs  114     17
Ambiguity between 'Status.d' and 'Status.d'                     Prioridades.cs  115     17
Ambiguity between 'Status.log' and 'Status.log'                 Prioridades.cs  116     17
Ambiguity between 'Status.p' and 'Status.p'                     Prioridades.cs  136     18
Ambiguity between 'Status.sql' and 'Status.sql'                 Prioridades.cs  137     13
Ambiguity between 'Status.d' and 'Status.d'                     Prioridades.cs  138     17
Ambiguity between 'Status.p' and 'Status.p'                     Prioridades.cs  157     18
Ambiguity between 'Status.sql' and 'Status.sql'                 Prioridades.cs  158     13
Ambiguity between 'Status.d' and 'Status.d'                     Prioridades.cs  159     26
Ambiguity between 'Status.p' and 'Status.p'                     Prioridades.cs  177     18
Ambiguity between 'Status.sql' and 'Status.sql'                 Prioridades.cs  178     4
Ambiguity between 'Status.d' and 'Status.d'                     Prioridades.cs  179     17

Das Seltsame ist: Ich habe ein anderes System nach genau der gleichen Methode gebaut, und es funktioniert hervorragend. Ich habe diese Dateien einfach auf eine andere Website kopiert und ändere die Klassen, um ein anderes System zu erstellen.

Irgendwelche Ideen? Es riecht nach Käfer...

EDITAR:

Ich habe es gerade erfahren. Was passiert ist: Ich kopierte die Klasse "Prioridades", benannte sie um und verwendete Refactoring in VS2010. Es benannte ALLE REFERENZEN auf "Prioridades" in "Status" um, einschließlich der ursprünglichen Klasse... Und alles wurde chaotisch.

Lösung: Seien Sie vorsichtig bei der Verwendung von Refactoring.

Tut mir leid, Leute...

1voto

Ann L. Punkte 13086

Es ist interessant, dass es sich gegen "Status.d" in Prioridades.cs wendet. Für mich sieht es so aus, als ob Prioridades.cs eine Klasse namens "Status" und nicht "Prioridades" enthält. Wenn Sie Klasseninhalte (oder ganze Dateien) kopieren und einfügen, achten Sie darauf, den Klassennamen zu ändern. Das kann man leicht vergessen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X