为依赖注入注册 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 并将调用转发给它。
我目前正在开发 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 implementIVsSolution
. Parameter name:serviceType
.
我也猜想,这适用于所有 COMImport
类型。无论如何我怎么能在更好的 SimpleInjector 容器中注册 COM 类型?
这是 Simple Injector v4 中的 known limitation,已在 v5 中修复。
要解决此问题,请创建 IVsSolution
的包装器实现,包装 __ComObject 并将调用转发给它。