MethodBase.IsAbstract プロパティ
メソッドが抽象メソッドかどうかを示す値を取得します。
Public ReadOnly Property IsAbstract As Boolean
[C#]
public bool IsAbstract {get;}
[C++]
public: __property bool get_IsAbstract();
[JScript]
public function get IsAbstract() : Boolean;
プロパティ値
このメソッドが抽象メソッドである場合は true 。それ以外の場合は false 。
解説
抽象メンバは、基本クラスで宣言され、実装を提供しません。
MethodBase を取得するには、最初に型を取得します。型からメソッドを取得します。メソッドから MethodBase を取得します。 MethodBase またはコンストラクタがパブリックでない場合は、それらは保護されているため簡単にはアクセスできません。パブリックでないメソッドにアクセスするには、 GetMethod で BindingFlags マスクを NonPublic に設定します。
使用例
指定したメソッドが抽象メソッドかどうかを調べ、その結果を表示する例を次に示します。
Imports System
Imports System.Reflection
Imports Microsoft.VisualBasic
Class methodbase1
Public Shared Function Main() As Integer
Console.WriteLine("Reflection.MethodBase")
Console.WriteLine()
' Get the types.
Dim MyType1 As Type = _
Type.GetType("System.Runtime.Serialization.Formatter")
Dim MyType2 As Type = _
Type.GetType("System.Reflection.MethodBase")
' Get and display the methods
Dim Mymethodbase1 As MethodBase = _
MyType1.GetMethod("WriteInt32", BindingFlags.NonPublic Or BindingFlags.Instance)
Dim Mymethodbase2 As MethodBase = _
MyType2.GetMethod("GetCurrentMethod", BindingFlags.Public Or BindingFlags.Static)
Console.WriteLine("Mymethodbase = {0}", Mymethodbase1.ToString())
If Mymethodbase1.IsAbstract Then
Console.WriteLine(ControlChars.CrLf & "Mymethodbase is an abstract method.")
Else
Console.WriteLine(ControlChars.CrLf & "Mymethodbase is not an abstract method.")
End If
Console.Write("Mymethodbase = {0}", Mymethodbase2.ToString())
If Mymethodbase2.IsAbstract Then
Console.WriteLine(ControlChars.CrLf & "Mymethodbase is an abstract method.")
Else
Console.WriteLine(ControlChars.CrLf & "Mymethodbase is not an abstract method.")
End If
Return 0
End Function
End Class
[C#]
using System;
using System.Reflection;
// using System.Windows.Forms;
class methodbase
{
public static int Main(string[] args)
{
Console.WriteLine ("\nReflection.MethodBase");
// Get the types.
Type MyType1 = Type.GetType("System.Runtime.Serialization.Formatter");
Type MyType2 = Type.GetType("System.Reflection.MethodBase");
// Get and display the methods.
MethodBase Mymethodbase1 =
MyType1.GetMethod("WriteInt32", BindingFlags.NonPublic|BindingFlags.Instance);
MethodBase Mymethodbase2 =
MyType2.GetMethod("GetCurrentMethod", BindingFlags.Public|BindingFlags.Static);
Console.Write("\nMymethodbase = " + Mymethodbase1.ToString());
if (Mymethodbase1.IsAbstract)
Console.Write ("\nMymethodbase is an abstract method.");
else
Console.Write ("\nMymethodbase is not an abstract method.");
Console.Write("\n\nMymethodbase = " + Mymethodbase2.ToString());
if (Mymethodbase2.IsAbstract)
Console.Write ("\nMymethodbase is an abstract method.");
else
Console.Write ("\nMymethodbase is not an abstract method.");
return 0;
}
}
[C++]
#using <mscorlib.dll>
using namespace System;
using namespace System::Reflection;
int main()
{
Console::WriteLine (S"\nReflection.MethodBase");
// Get the types.
Type* MyType1 = Type::GetType(S"System.Runtime.Serialization.Formatter");
Type* MyType2 = Type::GetType(S"System.Reflection.MethodBase");
// Get and display the methods.
MethodBase* Mymethodbase1 =
MyType1->GetMethod(S"WriteInt32",
static_cast<BindingFlags>(BindingFlags::NonPublic|BindingFlags::Instance));
MethodBase* Mymethodbase2 =
MyType2->GetMethod(S"GetCurrentMethod",
static_cast<BindingFlags>(BindingFlags::Public|BindingFlags::Static));
Console::Write(S"\nMymethodbase = {0}", Mymethodbase1);
if (Mymethodbase1->IsAbstract)
Console::Write (S"\nMymethodbase is an abstract method.");
else
Console::Write (S"\nMymethodbase is not an abstract method.");
Console::Write(S"\n\nMymethodbase = {0}", Mymethodbase2);
if (Mymethodbase2->IsAbstract)
Console::Write (S"\nMymethodbase is an abstract method.");
else
Console::Write (S"\nMymethodbase is not an abstract method.");
return 0;
}
[JScript]
class methodbase
{
public static function Main() : int
{
Console.WriteLine ("\nReflection.MethodBase");
//Get the MethodBase of two methods.
//Get the types
var MyType1 : Type = Type.GetType("System.Runtime.Serialization.Formatter");
var MyType2 : Type = Type.GetType("System.Reflection.MethodBase");
//Get and display the methods
var Mymethodbase1 : MethodBase =
MyType1.GetMethod("WriteInt32", BindingFlags.Instance|BindingFlags.NonPublic);
var Mymethodbase2 : MethodBase =
MyType2.GetMethod("GetCurrentMethod", BindingFlags.Static|BindingFlags.Public);
Console.Write("\nMymethodbase = " + Mymethodbase1.ToString());
if (Mymethodbase1.IsAbstract)
Console.Write ("\nMymethodbase is an abstract method");
else
Console.Write ("\nMymethodbase is not an abstract method");
Console.Write("\n\nMymethodbase = " + Mymethodbase2.ToString());
if (Mymethodbase2.IsAbstract)
Console.Write ("\nMymethodbase is an abstract method");
else
Console.Write ("\nMymethodbase is not an abstract method");
}
}
methodbase.Main();
/*
Produces the following output
Reflection.MethodBase
Mymethodbase = Void WriteInt32 (Int32, System.String)
Mymethodbase is an abstract method
Mymethodbase = System.Reflection.MethodBase GetCurrentMethod ()
Mymethodbase is not an abstract method
*/
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET
参照
MethodBase クラス | MethodBase メンバ | System.Reflection 名前空間 | Boolean | BindingFlags