2016-09-26 1 views
-1

Hier ist der Kontext (C#).Warum gibt der Compiler den Fehler "Der Name 'Bezeichner' existiert nicht im aktuellen Kontext"?

public class Base 
{ 
    public void SomeMethod() 
    { 

    } 
} 

public class Intermediate<TIntermediateTypeParam> 
{ 

} 

public class Derived<TDerivedTypeParam> : Intermediate<string> 
{ 
    public void SomethingElse() 
    { 
     SomeMethod(); // Error: The name 'SomeMethod' does not exist in the current context. 
    } 
} 

Dies war unerwartet. Irgendwelche Erklärungen, warum und wie man es repariert?

+0

zu dieser Änderung: 'public class Intermediate : Base' "fixiert" es für mich. – Quantic

+0

Hinweis: Bitte vermeiden Sie Multi-Tagging. Mit anderen Worten: Lesen Sie die Beschreibungen der Tags, bevor Sie sie verwenden. Sie haben eine sehr einfache C# -Frage. Sie brauchen keine Klassen- oder Design-Tags dafür! – GhostCat

Antwort

1

Intermediate ist Base nicht Unterklasse, die ist, wo das Verfahren ist daher nicht Teil der Derived Klasse ist und Derived kann es nicht direkt zugreifen.

würden Sie müssen entweder es von Base von einer Instanz anrufen oder haben Intermediate (oder Derived) Unterklasse Base

+0

Doh! Vielen Dank. Ich habe dieses Problem in einem komplexeren Kontext und versuchte es zu vereinfachen, bekam den gleichen Fehler (wegen Dummheit) und schrieb die Frage. Dies ist die Lösung für den vereinfachten Kontext, aber es ist nicht das Problem in dem komplexeren Szenario. Aus zu versuchen, das Problem in der realen Welt Code zu isolieren ... –

Verwandte Themen