.NET C #: можно ли автоматически импортировать TLB (полу) и добавить PreserveSig к одному типу? - PullRequest
0 голосов
/ 22 октября 2010

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

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

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

Есть ли другие варианты? Спасибо.

1 Ответ

1 голос
/ 22 октября 2010

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

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

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