Подтвердить что ты не робот

Как исправить: доступ к переменной foreach в предупреждении закрытия закрытия?

Я получаю это предупреждение ReSharper: Доступ к переменной foreach в закрытии. Может иметь другое поведение при компиляции с различными версиями компилятора.

Это то, что я делаю:

@foreach(var item in Model)
{
    // Warning underlines "item".
    <div>@Html.DisplayBooleanFor(modelItem => item.BooleanField)</div>
}

Мое расширение выглядит следующим образом:

public static MvcHtmlString DisplayBooleanFor<TModel, TValue>(
    this HtmlHelper<TModel> helper, 
    Expression<Func<TModel, TValue>> expression)
{
    bool value;

    try
    {
        var compiled = expression.Compile()(helper.ViewData.Model);
        value = Convert.ToBoolean(compiled);
    }
    catch (Exception)
    {
        value = false;
    }

    return MvcHtmlString.Create(value ? "Yes" : "No");
}

Обратите внимание, что это работает как ожидалось, но как я могу избежать этого предупреждения?
Я буду признателен за предоставленную помощь.

4b9b3361

Ответ 1

Переменная с блочной областью должна разрешить предупреждение.

@foreach(var item in Model)
{
    var myItem = item;
    <div>@Html.DisplayBooleanFor(modelItem => myItem.BooleanField)</div>
}

Ответ 2

Другой вариант - применить атрибут JetBrains.Annotations.InstantHandleAttribute к методу DisplayBooleanFor.