Множественное перечисление одного и того же перечисляемого является проблемой, которая была для нас проблемой производительности, поэтому мы пытаемся помешать этим предупреждениям в коде. Но есть общая функция расширения, которую мы имеем для того, чтобы выбрасывать исключения из нулевого параметра, которые генерируют много этих предупреждений. Его подпись выглядит следующим образом:
public static void VerifyArgumentIsNotNull<T>(this T value, string valueName) where T : class
Все, что он делает, это проверить значение null и бросить красиво отформатированный и локализованный (в зависимости от того, какой язык в данный момент играет в игру).
Когда эта функция используется в параметре IEnumerable, это делает анализ кода предупреждением о возможной множественной итерации IEnumerable, потому что анализатор не знает, что делает эта функция.
Я хотел бы поместить некоторый тег в эту функцию, который говорит: "Да, это берет перечислимый как вход, но не выполняет его итерацию и поэтому не следует считать возможной итерацией вызывающими". Есть ли такой тег? Я искал Интернет безрезультатно.