我该如何解决:在关闭resharper警告中访问foreach变量?

时间:2012-09-22 19:40:08

标签: c# resharper

我收到此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");
}

请注意,这是按预期工作的,但如何避免此警告? 我将非常感谢您提供的任何帮助。

2 个答案:

答案 0 :(得分:25)

块作用域变量应解决警告。

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

答案 1 :(得分:2)

另一种选择是将JetBrains.Annotations.InstantHandleAttribute属性应用于DisplayBooleanFor方法。