Отображение типов взаимодействия COM, отмеченных как TypeLibType (TypeLibTypeFlags.FHidden) в VS 2010 IntelliSense - PullRequest
0 голосов
/ 19 января 2011

Мой проект ссылается на COM DLL, некоторые типы которой помечены атрибутом [TypeLibType(TypeLibTypeFlags.FHidden)]. MSDN говорит: «Этот тип не должен отображаться в браузерах». Есть ли способ просмотреть эти типы через IntelliSense?

1 Ответ

1 голос
/ 20 января 2011

Сначала убедитесь, что вы не отметили «Скрыть расширенных членов» в параметрах VisualStudio (ветвь TextEditor / C #), хотя я не думаю, что вы сделали это, потому что по умолчанию не отмечен.

Может быть возможно обойти это, объявив проблемные интерфейсы самостоятельно и пропустив этот атрибут. Вы должны быть в состоянии сгенерировать взаимодействующую DLL и затем посмотреть на нее с помощью рефлектора. Почти всегда можно написать объявления COM в исходном коде C #, но иногда это бывает сложно.

Если вы хотите пойти по этому пути, есть некоторые подводные камни, в частности, отражатель не покажет вам элементы интерфейса в правильном порядке. Чтобы выяснить правильный порядок, используйте ildasm или средство просмотра TLB (оба включены в VisualStudio). Также обратите внимание, что если вы никогда не вызываете метод интерфейса, вы можете просто объявить фиктивный элемент для поддержания порядка и вам не нужна полная сигнатура метода, это может сэкономить много работы.

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