在做一些几乎完全无关紧要的事情时,一个问题突然出现在我脑海中:
obj.GetType().IsInterface在仅由C#代码组成的代码库中,表单的表达式是否真实?
我怀疑答案是否定的,因为:
GetType() 将始终返回运行时类型.[ComImport, CoClass(typeof(MyClass))]一个接口上使它看起来像您可以实例,但构造函数调用实际实例引用的类.我想不出任何其他情况.我错过了什么,或者我猜对了吗?
Jon*_*eet 38
obj.GetType().IsInterface在仅由C#代码组成的代码库中,表单的表达式是否真实?
是的 - 但可能不是你想的那样:
using System;
public class EvilClass
{
    public new Type GetType()
    {
        return typeof(IDisposable);
    }
}
class Test
{
    static void Main()
    {
        EvilClass obj = new EvilClass();
        Console.WriteLine(obj.GetType().IsInterface); // True
    }
}
稍微类似的,我相信你可以创建一个子类RealProxy,它将拦截调用并返回一个接口类型.
如果你的意思是"将GetType()声明的方法的返回值object永远是一个接口类型" - 在这种情况下,我怀疑答案是否定的.