如何使用反射来判断一个类是否是内部类?
正如标题所说,如何使用反射来检查类定义是否被定义为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));
As the title says, How do you use reflection to check if a class definition is defined as internal
?
typeof(...)
returns certain properties shown below but not whether a class is defined as internal
. Looked on Google but all I could find were lots of articles about running internal
or protected
methods using reflection.
It's not the methods I'm interested in this case, but the class definition.
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));
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
这是一个经典问题。来自 MSDN:
反射不会公开
类型
检查它是内部
、受保护
还是受保护内部
的方法。This is a classic issue. From MSDN:
Reflection does not expose a way on
Type
check if it isinternal
,protected
orprotected internal
.IsVisible 方法是否为您提供了您正在寻找的值为了?
Does the IsVisible method give you the value you are looking for?
以下是一些保证提供类型正确可见性的函数(可能是一个过度的实现):
Here are some functions guaranteed to give the correct visibility of the type (probably an overkill implementation):
呃,我不太确定,但是例如
在 C# 中“注意‘朋友’等于‘内部’”。
Ehh, I'm not quite sure, but e.g.
'Note 'Friend' equals 'Internal' in C#.