代码之家  ›  专栏  ›  技术社区  ›  Factor Mystic

为什么用c_编写shell扩展时接口继承不起作用?

  •  1
  • Factor Mystic  · 技术社区  · 14 年前

    根据 this article 关于在.net中编写shell扩展,继承shell接口就像编写代码时自然会做的那样是行不通的。我在自己的代码中也观察到了这一点。

    不起作用:

    public interface IPersist {
        // stuff specific only to IPersist
    }
    
    public interface IPersistFolder : IPersist {
        // stuff specific only to IPersistFolder
    }
    

    工作:

    public interface IPersistFolder {
        // stuff specific to IPersist only
        // stuff specific to IPersistFolder only
    }
    

    文章指出这一事实:

    瞧,它起作用了!注意到 我已经放弃了任何想法 IPersistFolder继承自 任何东西,包括 在它的右边 定义。坦白地说,我不能 告诉你为什么,但肯定是 工作很好,不应该给你 任何问题。

    所以我要问这个人不知道的问题; 为什么? 原来的代码没用吗?

    1 回复  |  直到 10 年前
        1
  •  3
  •   Hans Passant    14 年前

    COM不支持继承。COM接口声明是在继承的SDK头文件中定义的,但它们是由C++编译器解析的。它 支持继承。IPersistFile接口的具体实现必须提供 全部的 方法,包括来自Iunknown和Ipersist的方法。Iunknown由CLR负责。