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 не пытается установить какие-либо значения свойств, и это предусмотрено дизайном.

Другие вопросы по тегам