[この記事は19年前に書かれました]
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 もちろん、テストコードでしか使用しないでしょう。



コメント