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

Dim instance As Type Dim returnValue As MemberInfo() returnValue = instance.GetDefaultMembers
現在の Type のすべての既定メンバを表す MemberInfo オブジェクトの配列。 または 現在の Type に既定のメンバがない場合は、MemberInfo 型の空の配列。

メンバには、プロパティ、メソッド、フィールド、イベントなどがあります。
型に対するリフレクション時に Get メソッドによって返される基本クラスのメンバを次の表に示します。
メンバ型 | 非静的 | |
---|---|---|
いいえ | いいえ | |
いいえ | ||
適用なし | 共通型システムの規則では、継承は、プロパティを実装するメソッドの継承と同じになります。リフレクションは、プロパティを名前と署名によって隠ぺいされているとして扱います。下記のメモ 2 を参照してください。 | |
いいえ | はい。メソッド (仮想メソッドと非仮想メソッドの両方) は、名前によって隠蔽することもできますし、名前と署名によって隠蔽することもできます。 | |
いいえ | いいえ | |
適用なし | 共通型システムの規則では、継承は、プロパティを実装するメソッドの継承と同じになります。リフレクションは、プロパティを名前と署名によって隠ぺいされているとして扱います。下記のメモ 2 を参照してください。 |
-
名前と署名による隠ぺいでは、カスタム修飾子、戻り値の型、パラメータの型、sentinel、およびアンマネージ呼び出し規約を含めて、署名のすべての部分が判断の対象となります。これはバイナリ比較です。
-
リフレクションの場合、プロパティおよびイベントは名前と署名によって隠ぺいされています。基本クラスに get アクセサと set アクセサの両方を持つプロパティがあり、派生クラスには get アクセサしかない場合、派生クラスのプロパティにより基本クラスのプロパティが隠ぺいされ、基本クラスの set アクセサにはアクセスできません。
現在の Type が構築ジェネリック型を表している場合、このメソッドは、型パラメータを適切な型の引数で置き換えて MemberInfo オブジェクトを返します。たとえば、クラス C<T> で T を返すプロパティ P を保持している場合、GetDefaultMembers を C<int> で呼び出すと、int P (C# の場合) または Property P As Integer (Visual Basic の場合) が返されます。
現在の Type がジェネリック型またはジェネリック メソッドの定義の型パラメータを表している場合、このメソッドはクラス制約のメンバを検索します。クラス制約のメンバがない場合は、Object のメンバを検索します。

MyClass の既定のメンバの情報を取得し、既定のメンバを表示する例を次に示します。
Imports System Imports System.Reflection Imports System.IO Imports Microsoft.VisualBasic <DefaultMemberAttribute("Age")> Public Class [MyClass] Public Sub Name(ByVal s As String) End Sub 'Name Public ReadOnly Property Age() As Integer Get Return 20 End Get End Property Public Shared Sub Main() Try Dim myType As Type = GetType([MyClass]) Dim memberInfoArray As MemberInfo() = myType.GetDefaultMembers() If memberInfoArray.Length > 0 Then Dim memberInfoObj As MemberInfo For Each memberInfoObj In memberInfoArray Console.WriteLine("The default member name is: " + memberInfoObj.ToString()) Next memberInfoObj Else Console.WriteLine("No default members are available.") End If Catch e As InvalidOperationException Console.WriteLine("InvalidOperationException: " + e.Message) Catch e As IOException Console.WriteLine("IOException: " + e.Message) Catch e As Exception Console.WriteLine("Exception: " + e.Message) End Try End Sub 'Main End Class '[MyClass]
using System; using System.Reflection; using System.IO; [DefaultMemberAttribute("Age")] public class MyClass { public void Name(String s) {} public int Age { get { return 20; } } public static void Main() { try { Type myType = typeof(MyClass); MemberInfo[] memberInfoArray = myType.GetDefaultMembers(); if (memberInfoArray.Length > 0) { foreach(MemberInfo memberInfoObj in memberInfoArray) { Console.WriteLine("The default member name is: " + memberInfoObj.ToString()); } } else { Console.WriteLine("No default members are available."); } } catch(InvalidOperationException e) { Console.WriteLine("InvalidOperationException: " + e.Message); } catch(IOException e) { Console.WriteLine("IOException: " + e.Message); } catch(Exception e) { Console.WriteLine("Exception: " + e.Message); } } }
using namespace System; using namespace System::Reflection; using namespace System::IO; [DefaultMemberAttribute("Age")] public ref class MyClass { public: void Name( String^ s ){} property int Age { int get() { return 20; } } }; int main() { try { Type^ myType = MyClass::typeid; array<MemberInfo^>^memberInfoArray = myType->GetDefaultMembers(); if ( memberInfoArray->Length > 0 ) { System::Collections::IEnumerator^ myEnum = memberInfoArray->GetEnumerator(); while ( myEnum->MoveNext() ) { MemberInfo^ memberInfoObj = safe_cast<MemberInfo^>(myEnum->Current); Console::WriteLine( "The default member name is: {0}", memberInfoObj ); } } else { Console::WriteLine( "No default members are available." ); } } catch ( InvalidOperationException^ e ) { Console::WriteLine( "InvalidOperationException: {0}", e->Message ); } catch ( IOException^ e ) { Console::WriteLine( "IOException: {0}", e->Message ); } catch ( Exception^ e ) { Console::WriteLine( "Exception: {0}", e->Message ); } }
import System.*; import System.Reflection.*; import System.IO.*; /** @attribute DefaultMemberAttribute("Age") */ public class MyClass { public void Name(String s) { } //Name /** @property */ public int get_Age() { return 20; } //get_Age public static void main(String[] args) { try { Type myType = MyClass.class.ToType(); MemberInfo memberInfoArray[] = myType.GetDefaultMembers(); if (memberInfoArray.length > 0) { for (int iCtr = 0; iCtr < memberInfoArray.length; iCtr++) { MemberInfo memberInfoObj = memberInfoArray[iCtr]; Console.WriteLine("The default member name is: " + memberInfoObj.ToString()); } } else { Console.WriteLine("No default members are available."); } } catch (InvalidOperationException e) { Console.WriteLine("InvalidOperationException: " + e.get_Message()); } catch (IOException e) { Console.WriteLine("IOException: " + e.get_Message()); } catch (System.Exception e) { Console.WriteLine("Exception: " + e.get_Message()); } } //main } //MyClass

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 によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


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

Dim instance As _Type Dim returnValue As MemberInfo() returnValue = instance.GetDefaultMembers
現在の Type のすべての既定メンバを表す MemberInfo オブジェクトの配列。 または 現在の Type に既定のメンバがない場合は、MemberInfo 型の空の配列。

このメソッドは、アンマネージ コードからマネージ クラスにアクセスするためのメソッドであるため、マネージ コードからは呼び出さないでください。
Type.GetDefaultMembers メソッドは、DefaultMemberAttribute が設定されている現在の Type に定義されているメンバを検索します。

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 によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Weblioに収録されているすべての辞書からType.GetDefaultMembersを検索する場合は、下記のリンクをクリックしてください。

- Type.GetDefaultMembersのページへのリンク