1
A
回答
4
您可以在COM中使用聚合实现此功能。
基本上,您创建了一个实现了一些接口的对象,并包装了对内部对象的访问。
通过调用CoCreateInstance创建的内部对象,并将您自己的对象IUnknown作为pUnkOuter参数传递。
如果内部对象支持它(正确地)它将推迟到外部对象的所有接口调用,给你的对象第一次提供任何接口的机会。
需要注意的是可悲的几个COM对象的实际支持聚合 - 因为实施支持(一)很难得到正确,和(b)很难在编写代码来满足一些迫切需要的任何发展模式证明(其中涵盖了大多数当前流行的词汇载体开发方法) - 我遗憾地期望大多数com对象会(在最好的情况下)以E_NOTSUPPORTED响应,或者(在最坏的情况下)有一半测试尝试作为聚合支持,主要导致无限递归一旦它以非平凡的方式使用。
如果您确实发现了一个带有即用型聚合支持的com对象 - 那么您应该在彩票上使用了这种运气。 :P
1
接口可以继承其他接口,但组件不能覆盖另一个组件,除了组合组件,即将其他组件转发到组件组件,然后直接实现“重写”方法。
相关问题
- 1. 是否可以继承MKPolyline
- 2. 是否可以继承XAML?
- 3. 是否可以继承NSSavePanel?
- 4. 是否可以继承System.Net.Mail.Mailmessage?
- 5. 实体类是否可以从Value对象继承?
- 6. 是否可以在构造函数中继承Java对象?
- 7. 是否可以从内置对象继承?
- 8. NoneType类是否继承对象类?
- 9. PyQt类是否继承对象?
- 10. 是否需要显式继承对象?
- 11. 是否可以继承Luigi任务?
- 12. 是否可以继承android.content.ClipData或ClipData.Item?
- 13. 是否可以继承UiApplicationDelegate协议?
- 14. 是否可以从SPWeb继承?
- 15. 是否可以在ETW中继承EventSource?
- 16. 函数是否可以继承参数?
- 17. 是否可以将UITableView继承到SKNode?
- 18. Mosync:Widget是否可以继承TimerListener类
- 19. 可继承对象结构
- 20. 是否可以对所有非继承的css属性使用继承值?
- 21. 是否有可能从JavaScript Function对象继承?
- 22. 在protypal继承的元对象是否有意义ES5以上?
- 23. 是RCT_EXPORT_VIEW_PROPERTY可以继承
- 24. 是否可以通过继承扩展图形对象的功能?
- 25. 是否可以使用Qt线程而不继承任何Qt对象?
- 26. 是否可以根据组件类型和/或继承类型测试对象?
- 27. 继承自COM类
- 28. 是否可以使用PHP访问Linux中的COM对象?
- 29. 是否可以从Linux访问COM对象
- 30. 是否可以从chrome扩展中访问COM对象?
值得注意的是,从技术上讲,可以用聚合完成的所有事情也可以使用普通的老式委派(手动编写包装或使用工具自动生成)来完成。聚合效率更高。 – 2010-09-06 09:35:16