///////////////////////////////
// TestGetMembers.cs
// Check the members of Object
///////////////////////////////
using System;
using System.Windows.Forms;
using System.Reflection;	//GetMembersメソッドを使う為に必要

namespace TestGetMembers
{
	public class Sample
	{
		public static void Main()
		{
			//PropertyGridクラスのTypeを指定する
			Type t = typeof(System.Windows.Forms.PropertyGrid);
			//PropertyGridクラスのType tのメンバー情報を取得する
			/*	BindingFlags
				メンバ名			説明（値）
				Public				パブリックメンバを検索の対象に加える。（16）
				NonPublic			パブリックでないメンバを検索の対象に加える。（32）
				Instance			非静的メンバ（インスタンスメンバ）を検索の対象に加える。（4）
				Static				静的メンバを検索の対象に加える。（8）
				DeclaredOnly		継承されたメンバを検索の対象にしない。（2）
				FlattenHierarchy	階層構造の上位の静的メンバを検索の対象に加える。（64）
			*/
			MemberInfo[] members = t.GetMembers(BindingFlags.Public | BindingFlags.NonPublic |
    											BindingFlags.Instance | BindingFlags.Static |
    											BindingFlags.DeclaredOnly);
			foreach (MemberInfo m in members)
			{
				//メンバーの型と名前を表示する
				Console.WriteLine("{0} - {1}", m.MemberType, m.Name);
			}
			Console.Read();
		}
	}
}
