为什么不IAnyMicrosoftInterface(N)
继承IAnyMicrosoftInterface(N-1)
?
下面是相反的例子:
IFilterGraph3
接口继承自IFilterGraph2
. IFilterGraph3
也有这些类型的成员:
或者
ID2D1Bitmap1
接口继承自ID2D1Bitmap
. ID2D1Bitmap1
也有这些类型的成员:
这是 COM 接口设计中的两种方法。它可以解决两种方式。两种方式都可以通过两个接口访问所有新旧方法(并且可能仅通过新接口)。如果您选择继承,您基本上将所有旧方法复制到新接口上,并且根本不需要旧接口。如果您选择不继承,您可以选择重新定义某些方法,例如,添加新参数并让一切看起来都很好。
我可以确定如果某个对象支持 ISomeInterface5,那么它也支持 ISomeInterface4?
不。这可能正是新实现不会拖入太多遗留内容的关键。或者,设计人员更喜欢在同一个类上重用旧/新代码,因为旧实现和新实现由同一个类支持。常规的 COM 规则在这里适用:一个对象可能实现许多接口;您QueryInterface
以编程方式发现它们,并使用文档对接口可用性做出假设,以防明确承诺特定实现提供多个接口,尤其是。例如旧版本的进化界面。