1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
class Test { public string UserName = "hello"; public int UserAge = 0; public Test() { UserAge = 10; } } public Form1() { InitializeComponent(); // 通常アクセス Debug.Print(new Test().UserName); // hello // リフレクション var testObj = new Test(); // インスタンス生成 var objType = testObj.GetType(); // Type取得 Debug.Print(objType.Name); // Test var fieldInfo = objType.GetField("UserAge"); // TypeからFieldInfo取得 (存在しないとnull) Debug.Print(fieldInfo.GetValue(testObj).ToString()); // 10 // GetValueはインスタンスを渡す点に注意 fieldInfo.SetValue(testObj, 20); Debug.Print(testObj.UserAge.ToString()); // 20 } |
Getterにアクセスする場合もほぼ同じ。
1 2 3 4 5 6 |
foreach (var model in SalesDataGridViewModels) { var objType = model.GetType(); var propInfo = objType.GetProperty(ColumnSelect.Text); string targetString = propInfo.GetValue(model).ToString().Replace(" ", " "); } |