Сгенерированный Shim не содержит общих перегрузок метода (что их типы ограничены структурой)

Я использую подделки Microsoft для тестирования нашей базы кода, которая использует стороннюю сборку. Наш код вызывает статический универсальный метод класса, который имеет несколько неуниверсальных перегрузок. Что-то вроде этого:

ILookupResult Serivce.Lookup<T>(int code);
ILookupResult Service.Lookup(Type type,int code);

Проблема в том, что сгенерированный шим имеет запись для каждого неуниверсального метода, например:

ShimService.LookupTypeInt32

но для универсальных методов нет необходимости, и я понятия не имею, почему это так.

ОБНОВЛЕНИЕ 1: стоит упомянуть, что:

  • Создание заготовок для этой сторонней сборки невозможно. Я отключил создание заготовок.
  • Другие общие методы генерируются.

ОБНОВЛЕНИЕ 2: Хорошо, теперь я знаю, в чем проблема, установив атрибут Diagnostic узла Fake в true. Он сказал "неподдерживаемый тип ограничения", что заставило меня лучше взглянуть на интерфейс, и я заметил, что T должен быть struct:

 ILookupResult Serivce.Lookup<T>(int code) where T:struct;

теперь вопрос в том, почему структура не поддерживается в генерации шимов?

0 ответов

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