Как экспортировать универсальные типы в COM? Экспортер библиотеки типов обнаружил экземпляр универсального типа в подписи - PullRequest
6 голосов
/ 18 августа 2010

У меня есть метод с параметром по умолчанию:

void Test(int? iRange = null);

При попытке открыть мой класс для COM я получаю предупреждение:

Экспортер библиотеки типов обнаружил экземпляр универсального типа в сигнатуре. Общий код не может быть экспортирован в COM. Возможно ли кому-то как разоблачить этот метод?

Редактировать Извините, я думаю, что это связано с параметром nullable (не параметром по умолчанию). Я неправильно скопировал оригинальную сигнатуру метода.

1 Ответ

9 голосов
/ 29 января 2011

Я сталкивался с чем-то подобным пару лет назад, COM не поддерживает дженерики, поэтому все, что вы открываете для COM, должно быть дженериком бесплатным.

В этом случае «int? IRange» - просто сокращение для«Nullable iRange» и как таковая вызывает ошибку.Возможно, вам придется найти другой способ выразить то, что вы используете для выражения ноль.Вы можете добавить другой аргумент или использовать иное неиспользуемое значение iRange (0, -1 и int.MinValue приходят на ум в качестве возможностей - я бы порекомендовал предоставить значение как const, если вы выберете эту опцию).

...