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將返回空值。但是,如果使用枚舉 - Instance和nonpublic,則調用所需的方法。這兩者有什麼區別。當我不得不使用實例和公共/非公共組合時。一類受保護成員的思考
這似乎是.Net 4.0中的一個變化:我有一個類似的代碼,可以在.Net 3.5中完美工作,但是我必須將該標誌從「NonPublic」更改爲「Public」才能在4.0上運行。 – Medinoc