据推测,这样的IDisposable实现将调用Marshal.ReleaseComObject。
在某些情况下,调用 Marshal.ReleaseComObject 是一个好主意,例如,在 .NET 客户端自动化后让 Office 应用程序退出。
但作为国家的文档Marshal.ReleaseComObject,它不应该在一般情况下使用 - 并且可能根本不用于进程内 COM 对象。 这是一篇博客文章,其中包含一些更详细的信息。
IDisposable因此,通过从RCW 的实现中调用它来鼓励人们使用它并不是一个好主意。
然而,有趣的是 Silverlight 4AutomationFactory.CreateObject方法确实返回一个动态对象,即IDisposable. 测试似乎表明,这实际上释放了 COM 引用,尽管文档有点稀疏。