正如标题所说,如何使用反射来检查类定义是否已定义为 internal?"typeof(...)"返回以下某些属性,但不包括类是否已定义为 internal。在Google上查找,但我能找到的都是关于使用反射运行内部或受保护方法的大量文章。在这种情况下,我对的不是方法,而是类定义。
var type = typeof(Customer);
Assert.IsTrue(type.IsClass);
Assert.That(type.IsAbstract, Is.EqualTo(isAbstract));
Assert.That(type.IsPublic, Is.EqualTo(isPublic));
Assert.That(type.IsPublic, Is.EqualTo(isPublic));
Assert.That(type.IsSealed, Is.EqualTo(isSealed));
Assert.That(type.IsSerializable, Is.EqualTo(isSerializable));
Tuple<>
实现了internal interface ITuple
。该接口上的Type
对于上述标志为false
。我自己内部类的测试表现也是如此。 - Anthony Pegramclass A { class B { } }
,其中B
是在A
中嵌套的。文档中特别提到的IsAssembly
、IsFamily
属性在Type
对象上不是公开可用的。 - Anthony Pegramprotected internal
对应于CLR中的FamORAssem
(即可见于与该程序集相同或派生类型的任何内容)。FamANDAssem
在C#中没有对应项(除了在我的梦中)。 - zinglon