OmitAutoProperties влияет на неавтоматическое свойство
У меня есть класс, который имеет такое свойство
public string Foo
{
get { return _foo; }
set
{
if (!string.Equals(_foo, value))
{
_foo= value;
OnPropertyChanged();
}
}
}
Когда я создаю объект с _fixture = new Fixture {OmitAutoProperties = true};
Я ожидаю, что это имеет значение, но это ноль и сеттер никогда не срабатывает. Я что-то пропустил?
2 ответа
Это по замыслу. Как указано в документации:
Получает или задает, следует ли присваивать доступным для записи свойствам значение при создании анонимного объекта.
Другими словами, в AutoFixture термин auto-свойство относится к функции AutoFixture, которая автоматически заполняет доступные для записи свойства. Возможно, лучшее слово было бы DoNotAutomaticallyPopulateProperties
,
Я могу понять путаницу, так как в C# auto-свойство также может интерпретироваться как означающее автоматически реализуемые свойства.
Честно говоря, терминология AutoFixture, возможно, должна была быть выбрана с большей осторожностью, но за все эти годы я не думаю, что это когда-либо было доведено до моего внимания раньше.
Конкретно в ОП Foo
является записываемым свойством, и когда вы отключаете авто-свойства, установщик никогда не вызывается.
OmitAutoProperties
Параметр определяет, должно ли быть установлено свойствозаписи или нет:
Получает или задает, следует ли присваивать доступным для записи свойствам значение при создании анонимного объекта.
Итак, если это true
, AutoFixture не пытается установить какие-либо значения свойств, и это предусмотрено дизайном.