我一直在向 COM 接口添加新功能,从我所读到的唯一方法(并保持向后兼容)是创建一个继承旧接口并添加新方法的新接口。我试过这样做,但我的层次结构已经很复杂了。
假设这就是我目前的界面:
基础接口 | 衍生接口
我想向基本接口添加一些功能,现在看起来像这样:
IBaseOld接口 | 基础接口 | 衍生接口
因为我已经添加了这个新功能,我需要创建一个新的 IDerivedInterface 吗?我已经按照目前的方式进行了尝试,但它似乎不适用于所有情况。
我真的想要一些确认,并解释为什么如果可能的话
我需要进一步解释我的理想情况是什么以及为什么:
我想向 IBaseInterface 类添加一些方法,然后所有派生类都可以使用这些方法。我认为可能是这样的:
IBaseOld接口 / \ IDerivedOldInterface IBaseNewInterface \ / IDerivedNew接口
我知道应该避免钻石继承,但它们只是接口,所以我认为没关系。
当用户请求 INewDerivedInterfaces 之一时,具有这种新结构。查询接口将返回该 IID 的正确接口,无论是 INewDerivedInterface 还是 IOldDerivedInterface。