&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); } } }}