【发布时间】:2014-08-30 16:34:47
【问题描述】:
在做一些几乎完全不相关的事情时,一个问题突然出现在我的脑海中:
obj.GetType().IsInterface 形式的表达式能否在完全由 C# 代码组成的代码库中为真?
我怀疑答案是否定的,因为:
-
GetType()将始终返回运行时类型。 - 具体类型的运行时类型与调用的构造函数相匹配。因此,它永远不是接口,因为接口没有构造函数。
- 匿名类型不能实现接口(如果实现了,它们仍然有自己的匿名类类型)。
- 实现公共接口的其他程序集的内部类的实例仍将该类作为运行时类型。
-
Using
[ComImport, CoClass(typeof(MyClass))]on an interface 看起来可以实例化它,但构造函数调用实际上实例化了引用的类。
我想不出任何其他情况。是我遗漏了什么,还是我的猜测正确?
【问题讨论】:
标签: c# reflection