Рефакторинг оператора if для одного присваивания нарушает представление Razor, когда оно содержит ключевое слово C # - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть представление Razor с оператором if, который находится внутри оператора foreach:

@{
    var items = new List<SelectListItem> { new SelectListItem { Value = "0", Text = @"Select Item" } };
    foreach (var @case in Model.Items)
    {
        var selected = false;
        if (Model.MyProp != null && Model.MyProp.Id == @case.Id)
        {
            selected = true;
        }
        items.Add(new SelectListItem { Value = @case.Id.ToString(), Text = @case.MyReference, Selected = selected });
    }
}

Resharper выделяет оператор if и предлагает "Заменить одним присваиванием".Отлично, давайте сделаем это!Мы получаем:

bool selected = Model.MyProp != null && Model.MyProp.Id == @case.Id;

Но затем проект не удается построить, и дважды возникает следующая ошибка:

CS1513} ожидается

Один раз длянаш файл .cshtml, и еще раз для App_Web_44i02p0n.0.cs (который я предполагаю, что это какой-то временный сгенерированный файл?).

Если я верну рефакторингу, то он успешно скомпилируется.

Я заменил ключевое словоимя с чем-то еще, и это также успешно компилируется.

Почему эта единственная строка присваивания вызывает ошибки компиляции при использовании ключевого слова C #?

...