.NET C#: можно ли автоматически импортировать TLB (полу) и добавить PreserveSig к одному типу?

У меня есть этот большой IDL, который я импортирую в проект C#.

Все было хорошо, пока мне не пришлось использовать один интерфейс, который не совсем совместим с преобразованием HRESULT -> COMException (я могу вдаваться в подробности здесь, но это не должно относиться к делу).

Можно ли как-то добавить PreserveSig к этому одному типу? Я хотел бы избежать возможности объявления всех COM-интерфейсов вручную в C#. Если бы был способ получить исходный файл aC# вместо сборки из tlbimp, это бы меня устроило, но AFAIK такого способа нет.

Есть другие варианты? Благодарю.

1 ответ

Решение

Вы можете декомпилировать библиотеку взаимодействия с Ildasm.exeотредактируйте декларацию и верните ее снова с помощью ilasm.exe. Используйте пример объявления C#, чтобы знать, как его редактировать.

Или вы можете просто объявить, что один интерфейс в C#. Имя не имеет значения, только GUID должен совпадать. Откройте библиотеку взаимодействия в Reflector и скопируйте / вставьте объявление интерфейса в ваш код C#. Измените имя интерфейса и измените метод, который вызывает проблему.

Другие вопросы по тегам