Сгенерированный 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;
теперь вопрос в том, почему структура не поддерживается в генерации шимов?