using System;
using System.Reflection;
namespace Reflection
{
class Test
{
protected void methodname()
{
Console.WriteLine(("in the world of the reflection"));
Console.Read();
}
}
class Program
{
static void Main(string[] args)
{
// BindingFlags eFlags = BindingFlags.Default | BindingFlags.Instance | BindingFlags.Public|BindingFlags.NonPublic;
BindingFlags eFlags = BindingFlags.Instance|BindingFlags.NonPublic;
Test aTest = new Test();
MethodInfo mInfoMethod = typeof(Reflection.Test).GetMethod("methodname", eFlags);
mInfoMethod.Invoke(aTest, null);
}
}
}
msdnによると、BindingFlags.Nonpublicは非プライベートメンバーにアクセスするために使用されます。この列挙体だけを使用すると、Getmethodはnull値を返します。しかし、enum-Instanceとnonpublicを使用する場合、必要なメソッドが呼び出されます。これら2つの違いは何ですか?私はインスタンスとパブリック/非パブリックの組み合わせを使用する必要があります。保護されたクラスメンバーの反映
これは.Net 4.0で変更されたようです:.Net 3.5で完全に動作する同様のコードがありますが、4.0で動作させるには 'NonPublic'から' Public'にフラグを変更する必要がありました。 – Medinoc