为什么在反思中观察内部阶级不公开?

Sim*_*mon 5 .net c# reflection

AKA为什么这个测试失败了?

[TestFixture]
public class Tests
{
    [Test]
    public void InnerClassShouldBePublic()
    {
        Assert.IsTrue(typeof (InnerClass).IsPublic);
    }

    public class InnerClass
    {
    }

}
Run Code Online (Sandbox Code Playgroud)

shf*_*301 8

它失败是因为嵌套类型不被视为公共类型,而是考虑它们NestedPublic.

IsPublic()MSDN文档:

不要与嵌套类型一起使用; 使用IsNestedPublic来代替.