MethodInfo.GetBaseDefinition-Methode
Gibt beim Überschreiben in einer abgeleiteten Klasse das MethodInfo-Objekt für die Methode in der direkten oder indirekten Basisklasse zurück, in der die durch diese Instanz dargestellte Methode zuerst deklariert wurde.
Namespace: System.Reflection
Assembly: mscorlib (in mscorlib.dll)
Syntax
'Declaration
Public MustOverride Function GetBaseDefinition As MethodInfo
'Usage
Dim instance As MethodInfo
Dim returnValue As MethodInfo
returnValue = instance.GetBaseDefinition
public abstract MethodInfo GetBaseDefinition ()
public:
virtual MethodInfo^ GetBaseDefinition () abstract
public abstract MethodInfo GetBaseDefinition ()
public abstract function GetBaseDefinition () : MethodInfo
Rückgabewert
Ein MethodInfo-Objekt für die erste Implementierung dieser Methode.
Hinweise
GetBaseDefinition gibt die erste Definition der angegebenen Methode in der Klassenhierarchie zurück.
Wenn die Methode für eine Schnittstelle deklariert wird, gibt GetBaseDefinition die Methode zurück.
Wenn die Methode in einer Basisklasse definiert wird, funktioniert GetBaseDefinition wie folgt:
Wenn eine angegebene Methode eine virtuelle Methode in der Basisklasse überschreibt, wird die virtuelle Definition zurückgegeben.
Wenn eine bestimmte Methode mit dem new-Schlüsselwort angegeben wird (z. B. in newslot, wie unter Typmember beschrieben), wird die angegebene Methode zurückgegeben.
Wenn die Methode nicht im Typ des Objekts definiert ist, für das GetBaseDefinition aufgerufen wird, wird die Methodendefinition an der höchsten Position in der Klassenhierarchie zurückgegeben.
Wenn Sie die GetBaseDefinition-Methode abrufen möchten, rufen Sie zunächst den Type der Klasse ab. Über Type rufen Sie MethodInfo ab. Über MethodInfo rufen Sie GetBaseDefinition ab.
Beispiel
Dieses Codebeispiel veranschaulicht das Verhalten von GetBaseDefinition.
Imports System
Imports System.Reflection
Public Class GetBaseDef
Public Shared Sub Main()
Dim t As Type = GetType(B)
Dim m As MethodInfo
' Print A Void B().
m = t.GetMethod("B")
Console.WriteLine(m.GetBaseDefinition().DeclaringType.ToString() + " " _
+ m.GetBaseDefinition().ToString())
' Print A Void C().
m = t.GetMethod("C")
Console.WriteLine(m.GetBaseDefinition().DeclaringType.ToString() + " " _
+ m.GetBaseDefinition().ToString())
' Print B Void D().
m = t.GetMethod("D", BindingFlags.Public Or BindingFlags.Instance _
Or BindingFlags.DeclaredOnly)
Console.WriteLine(m.GetBaseDefinition().DeclaringType.ToString() + " " _
+ m.GetBaseDefinition().ToString())
End Sub
End Class
Public Class A
Public Overridable Sub B()
Console.WriteLine("C")
End Sub
Public Overridable Sub C()
Console.WriteLine("C")
End Sub
Public Overridable Sub D()
Console.WriteLine("E")
End Sub
End Class
Public Class B
Inherits A
Public Overrides Sub C()
Console.WriteLine("C")
End Sub
Public Shadows Sub D()
Console.WriteLine("D")
End Sub
End Class
using System;
using System.Reflection;
public class GetBaseDef {
public static void Main(String[] args)
{
Type t = typeof(B);
MethodInfo m;
// Print A Void B().
m = t.GetMethod("B");
Console.WriteLine(m.GetBaseDefinition().DeclaringType + " " + m.GetBaseDefinition());
// Print A Void C().
m = t.GetMethod("C");
Console.WriteLine(m.GetBaseDefinition().DeclaringType + " " + m.GetBaseDefinition());
// Print B Void D().
m = t.GetMethod("D", (BindingFlags.Public |
BindingFlags.Instance |
BindingFlags.DeclaredOnly));
Console.WriteLine(m.GetBaseDefinition().DeclaringType + " " + m.GetBaseDefinition());
}
}
public class A
{
public virtual void B() { Console.WriteLine("C"); }
public virtual void C() { Console.WriteLine("C"); }
public virtual void D() { Console.WriteLine("E"); }
}
public class B : A
{
public override void C() { Console.WriteLine("C"); }
public new void D() { Console.WriteLine("D"); }
}
using namespace System;
using namespace System::Reflection;
public ref class A
{
public:
virtual void B()
{
Console::WriteLine( "C" );
}
virtual void C()
{
Console::WriteLine( "C" );
}
virtual void D()
{
Console::WriteLine( "E" );
}
};
public ref class B: public A
{
public:
virtual void C() override
{
Console::WriteLine( "C" );
}
virtual void D() override
{
Console::WriteLine( "D" );
}
};
int main()
{
Type^ t = B::typeid;
MethodInfo^ m;
// Print A Void B().
m = t->GetMethod( "B" );
Console::WriteLine( "{0} {1}", m->GetBaseDefinition()->DeclaringType, m->GetBaseDefinition() );
// Print A Void C().
m = t->GetMethod( "C" );
Console::WriteLine( "{0} {1}", m->GetBaseDefinition()->DeclaringType, m->GetBaseDefinition() );
// Print B Void D().
m = t->GetMethod( "D", static_cast<BindingFlags>((BindingFlags::Public | BindingFlags::Instance | BindingFlags::DeclaredOnly)) );
Console::WriteLine( "{0} {1}", m->GetBaseDefinition()->DeclaringType, m->GetBaseDefinition() );
}
import System.*;
import System.Reflection.*;
public class GetBaseDef
{
public static void main(String[] args)
{
Type t = B.class.ToType();
MethodInfo m;
// Print A Void B().
m = t.GetMethod("B");
Console.WriteLine((m.GetBaseDefinition().get_DeclaringType() + " "
+ m.GetBaseDefinition()));
// Print A Void C().
m = t.GetMethod("C");
Console.WriteLine((m.GetBaseDefinition().get_DeclaringType() + " "
+ m.GetBaseDefinition()));
// Print B Void D().
m = t.GetMethod("D",BindingFlags.Public | BindingFlags.Instance
| BindingFlags.DeclaredOnly);
Console.WriteLine((m.GetBaseDefinition().get_DeclaringType() + " "
+ m.GetBaseDefinition()));
} //main
} //GetBaseDef
public class A
{
public void B()
{
Console.WriteLine("C");
} //B
public void C()
{
Console.WriteLine("C");
} //C
public void D()
{
Console.WriteLine("E");
} //D
} //A
public class B extends A
{
public void C()
{
Console.WriteLine("C");
} //C
public void D()
{
Console.WriteLine("D");
} //D
} //B
import System;
import System.Reflection;
public class GetBaseDef {
public static function Main() : void
{
var t : Type = B;
var m : MethodInfo;
// Print A Void B().
m = t.GetMethod("B");
Console.WriteLine(m.GetBaseDefinition().DeclaringType + " " + m.GetBaseDefinition());
// Print A Void C().
m = t.GetMethod("C");
Console.WriteLine(m.GetBaseDefinition().DeclaringType + " " + m.GetBaseDefinition());
// Print B Void D().
m = t.GetMethod("D", (BindingFlags.Public |
BindingFlags.Instance |
BindingFlags.DeclaredOnly));
Console.WriteLine(m.GetBaseDefinition().DeclaringType + " " + m.GetBaseDefinition());
}
}
GetBaseDef.Main();
public class A
{
public function B() : void { Console.WriteLine("C"); }
public function C() : void { Console.WriteLine("C"); }
public function D() : void { Console.WriteLine("E"); }
}
public class B extends A
{
public override function C() : void { Console.WriteLine("C"); }
public hide function D() : void { Console.WriteLine("D"); }
}
Plattformen
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
.NET Compact Framework
Unterstützt in: 2.0, 1.0
Siehe auch
Referenz
MethodInfo-Klasse
MethodInfo-Member
System.Reflection-Namespace