Recibo esta advertencia de ReSharper: Acceso a la variable foreach en el cierre. Puede tener un comportamiento diferente cuando se compila con diferentes versiones del compilador.¿Cómo puedo solucionarlo: acceso a la variable foreach en la advertencia de reafilado de cierre?
Esto es lo que estoy haciendo:
@foreach(var item in Model)
{
// Warning underlines "item".
<div>@Html.DisplayBooleanFor(modelItem => item.BooleanField)</div>
}
Mi extensión es de la siguiente manera:
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");
}
Nota esto está funcionando como se esperaba, pero ¿cómo puedo evitar esta advertencia?
Agradeceré cualquier ayuda brindada.
¿Por qué está utilizando 'Expression <>' si todo lo que hace con él es llamar a '.Compile()' en él? ¿Por qué no usar 'Func <>' directamente? – hvd
¿Por qué estás pasando una Expresión en vez de solo un bool? –
@ ChaosPandion: es útil para mí ya que no necesito usar un si en mi opinión. – Esteban