日期:2014-05-17  浏览次数:20713 次

我遇到一个接口居然可以被实例化,求解释

------解决方案--------------------
因为该COM接口被标记为[CoClass(typeof(XX))]。
coclass就是实现COM接口的实体。你可以理解XX就是该实体,而C#允许该种写法(可能为了兼容老版本)。
------解决方案--------------------
这是C#玩的魔术。事实上它会在幕后产生一个com存根类。
------解决方案--------------------
引用:
因为该COM接口被标记为[CoClass(typeof(XX))]。
coclass就是实现COM接口的实体。你可以理解XX就是该实体,而C#允许该种写法(可能为了兼容老版本)。

作了个测试

    [CoClass(typeof(TestInterClass))]
    public interface TestInter
    { }
     public class TestInterClass
     {
         public TestInterClass()
         { }
     }

TestInter test = new TestInter(); //wrong