为依赖注入注册 COM 类型

Register COM type for Dependency Injection

我目前正在开发 Visual Studio 扩展,但我很确定这应该适用于所有类型的应用程序。

我有一个 SimpleInjector 容器,我想在其中注册一个 IVsSolution(COM 对象)。请注意,它由以下属性标记:

[ComImport]
[Guid("7F7CD0DB-91EF-49DC-9FA9-02D128515DD4")]
[ComConversionLoss]
[InterfaceType(1)]

无论如何,当我尝试使用以下代码时:

var container = new Container();

container.RegisterInstance(IVsSolutionInstance);

它抛出以下错误:

The supplied type __ComObject does not implement IVsSolution. Parameter name: serviceType.

我也猜想,这适用于所有 COMImport 类型。无论如何我怎么能在更好的 SimpleInjector 容器中注册 COM 类型?

这是 Simple Injector v4 中的 known limitation已在 v5 中修复。

要解决此问题,请创建 IVsSolution 的包装器实现,包装 __ComObject 并将调用转发给它。