Я получаю предупреждение компилятора, которое появилось, когда я обновился до FluentAssertions 4.2.2. В следующем коде, если я вызываю EndsWith(nameof(x))
, я получаю предупреждение о неоднозначном вызове. Если вместо этого я определяю var foo = nameof(x)
и вызываю EndsWith(foo)
, он компилируется чисто. Код работает нормально в обоих сценариях.
Мои вопросы: почему это происходит, и есть ли обходной путь, кроме сохранения результата nameof()
в переменной?
[Test]
public void TestLastNamesAreSame()
{
var original = new MyDTO("fred", "jones");
var expected = new MyDTO("barney", "jones");
// this gives an Ambiguous invocation warning
expected.ShouldBeEquivalentTo(original, o => o
.Excluding(x => x.SelectedMemberPath.EndsWith(nameof(MyDTO.FirstName))));
// but when I use a variable holding the same value, it works without warning
const string nameOfFirstNameField = nameof(MyDTO.FirstName);
expected.ShouldBeEquivalentTo(original, o => o
.Excluding(x => x.SelectedMemberPath.EndsWith(nameOfFirstNameField)));
}
public class MyDTO
{
public string FirstName { get; }
public string LastName { get; }
public MyDTO(string firstName, string lastName)
{
FirstName = firstName;
LastName = lastName;
}
}
MyDTO
класс? Я создал простой класс со свойствамиLastName
иFirstName
и конструктором, но не смог воспроизвести его. Оба работали. - person Szabolcs Dézsi   schedule 18.02.2016nameof
и ложными предупреждениями. Так что, вероятно, это уже было исправлено. - person Szabolcs Dézsi   schedule 18.02.2016