Используйте интерфейс COM из C #, который не имеет фиксированного CLSID - PullRequest
0 голосов
/ 04 мая 2018

Я использую стороннюю библиотеку, которая предоставляет интерфейс COM (всегда один и тот же). Однако по какой-то причине они решили менять CLSID с каждой новой версией. Я могу найти CLSID в реестре или, возможно, даже из ProgID, но мне нужно использовать его из C #.

[ComImport, Guid("THAT-CHANGES")]
interface IFoo {
  void Bar();
}

В принципе, я могу объявить идентичные IFooV1, IFooV2 и т. Д., Которые имеют разные GUID, и выполнить между ними ручную диспетчеризацию. Тем не менее, я хотел бы знать, возможно ли установить этот GUID во время выполнения после выяснения, какая это версия, чтобы избежать дублирования кода.

...