Nicht auf einen nicht statischen member des äußeren Typs via nested type
Habe ich Fehler
Nicht auf einen nicht statischen member des äußeren Typs 'Projekt.Neuro' über
geschachtelte Typ 'Project.Neuro.Net'
mit code wie folgt (vereinfacht):
class Neuro
{
public class Net
{
public void SomeMethod()
{
int x = OtherMethod(); //error is here
}
}
public int OtherMethod() //its outside Neuro.Net class
{
return 123;
}
}
Kann ich problematische Methode, um Neuro.Net Klasse, aber ich brauche diese Methode außerhalb.
Im Art von Ziel-Programmierung-newbie.
Vielen Dank im Voraus.
- Scheint ziemlich offensichtlich -
OtherMethod
ist ein Mitglied von einem anderen Typ. Die Tatsache, dass es verschachtelt ist, bedeutet nicht, die Methoden vererbt werden. - Finden Sie diese Antwort SO für mehr info: stackoverflow.com/a/5393472/1451531
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem ist, dass verschachtelte Klassen sind nicht abgeleitet Klassen, so dass die Methoden der äußeren Klasse sind nicht geerbt.
Einige Optionen sind
Machen die Methode
static
:Vererbung verwenden statt der Schachtelung von Klassen:
Erstellen Sie eine Instanz der
Neuro
:müssen Sie instanziieren ein Objekt vom Typ
Neuro
irgendwo in deinem code und rufen SieOtherMethod
auf, daOtherMethod
ist keine statische Methode. Egal, ob Sie dieses Objekt in derSomeMethod
oder übergeben Sie Sie als argument an, es ist bis zu Ihnen. So etwas wie:alternativ können Sie
OtherMethod
statische, mit denen Sie es aufrufenSomeMethod
wie Sie derzeit sind.Auch wenn die Klasse geschachtelt ist, innerhalb einer anderen Klasse, es ist immer noch nicht klar, welche Instanz der äußeren Klasse spricht, zu welcher Instanz der inneren Klasse. Ich erstellen Sie eine Instanz der inneren Klasse auf und übergeben es auf die andere Instanz der äußeren Klasse.
Daher benötigen Sie spezifische Instanz zum aufrufen dieser
OtherMethod()
.Übergeben Sie die Instanz, auf die Schöpfung:
Ich denke, dass eine Instanz der äußeren Klasse die innere Klasse ist nicht eine gute option, weil Sie möglicherweise ausführen der Geschäftslogik auf äußere Konstruktor der Klasse. Macht statische Methoden oder Eigenschaften, die besser option. Wenn Sie darauf bestehen, eine Instanz der äußeren Klasse haben, als Sie sollten hinzufügen, ein weiterer parameter der äußeren Klasse contructor, die nicht zur Ausführung der Geschäftslogik.