リフレクションによって実行時に型自身の情報を取得することができます。 取得できる情報については後述の§.Typeクラスから取得できる情報や§.メンバ情報の取得 (MemberInfo)などで解説します。
リフレクション機能を使って実行時に型情報を取得する
using System;
using System.Reflection;
class Account {
public int ID { get; set; }
public string Name { get; set; }
public Account(int id, string name)
{
this.ID = id;
this.Name = name;
}
}
class Sample {
static void Main()
{
// Accountクラスの型情報を取得する
var t = typeof(Account);
Console.WriteLine("Name = {0}", t.Name);
Console.WriteLine("BaseType = {0}", t.BaseType);
// Accountクラスのすべてのメンバ情報を取得する
// (パブリックおよび非パブリックのインスタンスメンバを取得する)
var members = t.GetMembers(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
foreach (var m in members) {
Console.WriteLine("MemberType = {0}, Name = {1}", m.MemberType, m.Name);
}
}
}
実行結果例
Name = Account BaseType = System.Object MemberType = Method, Name = get_ID MemberType = Method, Name = set_ID MemberType = Method, Name = get_Name MemberType = Method, Name = set_Name MemberType = Method, Name = Equals MemberType = Method, Name = Finalize MemberType = Method, Name = GetHashCode MemberType = Method, Name = GetType MemberType = Method, Name = MemberwiseClone MemberType = Method, Name = ToString MemberType = Method, Name = obj_address MemberType = Constructor, Name = .ctor MemberType = Property, Name = ID MemberType = Property, Name = Name MemberType = Field, Name = <ID>k__BackingField MemberType = Field, Name = <Name>k__BackingField