&tag(CSharp/メタプログラミング);
*目次 [#nc49c318]
#contents
*参考情報 [#b1b49ebc]

*Type [#kf219ecd]
**typeofで取得 [#j0a529c7]
typeof(クラス)で取得できる。
 typeof(Window)

**GetTypeで取得 [#k44051e4]
-objectクラスのインスタンスメソッドGetType()で取得できる
objectクラスのインスタンスメソッドGetType()で取得できる
 Type type = obj.GetType()

**オブジェクトを生成 [#a76509c2]
Activator.CreateInstance(type)で可能。
 Object o = Activator.CreateInstance(t);

*プロパティの設定・取得 [#j31b55a2]
-TypeからPropertyInfoをGetPropertyで取得し、PropertyInfoのSetValue(), GetValue()メソッドを使う。
-PropertyInfoの機能を学習するためのテストのサンプルコード。
#pre{{
    public class Person
    {
        public string Name { get; set; }
    }

    [TestClass]
    public class PropertyInfoTest
    {
        [TestMethod]
        public void TestSetGet()
        {
            Person person = new Person() { Name = "中田英寿" };
            Assert.AreEqual("中田英寿", person.Name);

            Type type = typeof(Person);
            PropertyInfo pi = type.GetProperty("Name");
            pi.SetValue(person, "中村俊輔", null);
            Assert.AreEqual("中村俊輔", pi.GetValue(person, null));
            Assert.AreEqual("中村俊輔", person.Name);
        }
    }
}}

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS