Сделать enum импортированным из WCF как видимый в COM Interop - PullRequest
0 голосов
/ 15 декабря 2010

У меня есть несколько служб WCF, которые я импортировал в библиотеку классов .Net4. При создании прокси несколько перечислителей, объявленных как DataContracts, импортируются в прокси. Позже я раскрываю несколько процедур через COM Interop для использования в качестве библиотек ActiveX, и я использую импортированные перечислители в качестве параметров этих процедур.
В процедурах моей библиотеки классов я могу выставить с [ComVisible(true)], чтобы они могли быть вызваны через COM. Тем не менее, методы, которые имеют перечислители в качестве параметров, когда я регистрируюсь с regasm.exe, я получаю сообщение об ошибке:

Type library exporter warning processing 'xxxxxx.Method(pEnumerator),yyyyyy'. Warning: Non COM visible value type 'yyyyyy.zzzzzzz.enEnumerator' is being referenced either from the type currently being exported or from one of its base types.

Я знаю, что это происходит из-за того, что перечислители не предоставляются ComVisible, но если я добавлю необходимый параметр, поскольку они находятся в прокси, при каждом обновлении прокси они будут перезаписаны. Есть ли что-нибудь вокруг этого?
Я могу создать свои собственные перечислители внутри библиотеки классов, выставить их с помощью ComVisible и сделать switch, чтобы сопоставить импортированные перечислители с моими созданными перечислителями. Но я бы хотел этого избежать.
ТКС за помощь

1 Ответ

1 голос
/ 15 декабря 2010

Создайте общую библиотеку, которая будет общей для клиента и службы.Добавьте свои перечислители в эту сборку и пометьте их ComVisible.

. При создании прокси-сервера из VS имеется флажок (установлен по умолчанию), который позволяет повторно использовать типы в текущих или ссылочных сборках.Если этот флажок установлен, прокси будет использовать типы из общей сборки вместо создания новых.

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