[この記事は18年前に書かれました]
privateで定義されているフィールドに対して、読み書きしたい場合にはInvokeMemberを使用します。
class Test { private string str; } Test test = new Test(); // set test.GetType().InvokeMember("str", BindingFlags.SetField | BindingFlags.NonPublic | BindingFlags.Instance, null, test, new Object[] { "test" }); // get Object ob = test.GetType().InvokeMember("str", BindingFlags.GetField | BindingFlags.NonPublic | BindingFlags.Instance, null, test, null); Console.WriteLine(ob);
出力:test もちろん、テストコードでしか使用しないでしょう。
コメント