MethodInfo.GetBaseDefinition メソッド
アセンブリ: mscorlib (mscorlib.dll 内)

Dim instance As MethodInfo Dim returnValue As MethodInfo returnValue = instance.GetBaseDefinition
このメソッドの最初の実装に対する MethodInfo オブジェクト。

GetBaseDefinition は、指定したメソッドについて、クラス階層構造における最初の定義を返します。
メソッドがインターフェイスで宣言されている場合、GetBaseDefinition はそのメソッドを返します。
メソッドが基本クラスで定義されている場合、GetBaseDefinition は次のように動作します。
-
メソッドが new キーワード (型のメンバ の newslot など) を使用して指定されている場合は、そのメソッドが返されます。
-
メソッドが、GetBaseDefinition が呼び出されたオブジェクトの型で定義されていない場合、クラスの階層構造で最上位のメソッド定義が返されます。
GetBaseDefinition メソッドを取得するには、最初に Type クラスを取得します。そして、その Type から MethodInfo を取得します。そして、その MethodInfo から GetBaseDefinition を取得します。

このコード例は、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"); } }

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


_MethodInfo.GetBaseDefinition メソッド
アセンブリ: mscorlib (mscorlib.dll 内)

Function GetBaseDefinition As MethodInfo
Dim instance As _MethodInfo Dim returnValue As MethodInfo returnValue = instance.GetBaseDefinition
このメソッドの最初の実装に対する MethodInfo オブジェクト。

このメソッドは、アンマネージ コードからマネージ クラスにアクセスするためのメソッドであるため、マネージ コードからは呼び出さないでください。
GetBaseDefinition メソッドは、このインスタンスで表されるメソッドが最初に宣言された直接基本クラスまたは間接基本クラスでメソッドに対する MethodInfo オブジェクトを返します。

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- MethodInfo.GetBaseDefinitionのページへのリンク