前のエントリでRuby版書いたので次はC#版
class A
{
private void Foo()
{
Console.WriteLine("A#Foo");
}
}
こんなprivateメソッドFooを持ったAクラスのFooを外部から呼び出す場合…
リフレクションを使って下のように書く
A a = new A();
// privateのメソッドを無理やり取り出して
MethodInfo method = a.GetType().GetMethod(
"Foo",
BindingFlags.Instance | BindingFlags.NonPublic);
method.Invoke(a, null); // -> A#Foo
カプセル化なんて目じゃないね。