Предполагая, что вы имеете в виду метод:
static bool GenericIDictionaryIsAssignableFromType(Type type, out Type keyType, out Type valueType)
и вызов метода:
#if DEBUG
if (!GenericIDictionaryIsAssignableFromType(dictionary.GetType()))
throw new InvalidOperationException("The type does not implement IDictionary<,>");
#endif
Тогда наблюдаемое вами поведение, вероятно, связано с существованием директив препроцессора.(# если / # ENDIF).Если вы компилируете код локально в режиме DEBUG,
, код выдаст ошибку компилятора, которую вы видите.Тем не менее, если вы скомпилируете / запустите в режиме RELEASE (это может быть то, как ваш CI / CD и / или другие тестовые среды могут быть настроены), код не будет иметь никаких ошибок (так как # if / # endif исключает соответствующие строки кодаиз файла до того, как компилятор их увидит), и он будет работать как положено.