isPublic来查internal时,也返回true。这是为什么。

class Test
{
internal int TestInt()
{
return 1;
}
public string TestString()
{
return "a";
}
}
static void Main(string[] args)
{
Test test = new Test();
Console.WriteLine(test.TestString().GetType().IsPublic);//true
Console.WriteLine(test.TestInt().GetType().IsPublic);//internal的方法,IsPublic返回true??
}

test.TestInt()返回的是int
TestString()返回的是string
所以你判断的不是TestInt和TestSring的可见性,而是int和string的可见性。当然它们是public的。

 你可以用
test.GetType().GetMethod("TestInt", BindingFlags.Instance | BindingFlags.NonPublic).IsPublic 判断