Ist es eine Möglichkeit, eine Methode in jeder abgeleiteten Klasse hierarchisch aufzurufen?Aufruf einer Methode in jeder abgeleiteten Klasse
Ich brauche es, um es mit Benutzer-Skripten zu verwenden, so kann ich den Benutzer nicht zwingen, base.Update() aufzurufen;
Ich brauche es angerufen werden, ob er den Basisanruf getan hat oder nicht.
public class Base
{
public virtual void Update()
{
Console.WriteLine("BASE UPDATE");
;
}
}
public class Base2 : Base
{
public override void Update()
{
Console.WriteLine("BASE2 UPDATE");
;
}
}
public class Base3 : Base2
{
public override void Update()
{
// base.Update() ? no no, i want to do it for User Scripts so i cant force user to call base.Update()
Console.WriteLine("BASE3 UPDATE");
}
}
public class TestClass
{
public void DoTheTest()
{
Base3 instance = new Base3();
instance.Update();
// the output i need:
/*
BASE UPDATE
BASE2 UPDATE
BASE3 UPDATE
*/
}
}
Nicht genau ein Duplikat - diese Antwort zeigt, wie eine einzelne Basismethode aufgerufen wird - OP möchte alle überschriebenen Basismethoden hierarchisch aufrufen, ohne sie tatsächlich zu codieren. – PaulF
Nein, C# bietet keine Möglichkeit, dies zu gewährleisten. Das * Template-Muster *, wie es in der [link in Mark Phillips 'Antwort] (http://stackoverflow.com/questions/3747711/call-base-function-then-inherited-function) gezeigt wird, ist Ihre beste Wette, auch wenn es passt nicht 100%. – Heinzi
Die Sprache funktioniert nicht so. Was versuchst du zu tun, schreibe Unity um? –