Зарегистрируйте тип COM для внедрения зависимостей - PullRequest
1 голос
/ 01 марта 2020

В настоящее время я работаю над расширением Visual Studio, однако я почти уверен, что это должно применяться ко всем видам приложений.

У меня есть контейнер SimpleInjector, в котором я хочу зарегистрировать IVsSolution (COM-объект). Обратите внимание, что он помечен следующими атрибутами:

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

Во всяком случае, когда я пытаюсь следующий код:

var container = new Container();

container.RegisterInstance(IVsSolutionInstance);

Выдает следующую ошибку:

Поставляемый тип __ComObject не реализует IVsSolution. Имя параметра: serviceType.

Я бы также предположил, что это применимо ко всем COMImport типам. В любом случае, как я могу зарегистрировать тип COM в предпочтительном контейнере SimpleInjector?

1 Ответ

1 голос
/ 01 марта 2020

Это известное ограничение в Simple Injector, которое может быть исправлено во временном интервале v5.

Чтобы обойти эту проблему, создайте реализацию оболочки IVsSolution, которая переносит __ComObject и перенаправляет вызовы на него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...