Если вы хотите проверить, когда свойство установлено, вам нужно использовать неавтоматические свойства (то есть, определенные вручную get
и set
методы).
Но другой способ проверки состоит в том, чтобы иметь логику проверки отдельно от объекта домена.
class Customer {
public string FirstName { get; set; }
public string LastName { get; set; }
public string Organization { get; set; }
}
interface IValidator<T> {
bool Validate(T t);
}
class CustomerValidator : IValidator<Customer> {
public bool Validate(Customer t) {
// validation logic
}
}
Тогда вы могли бы сказать:
Customer customer = // populate customer
var validator = new CustomerValidator();
if(!validator.Validate(customer)) {
// head splode
}
Я предпочитаю такой подход:
- A
Customer
не должен нести ответственность за проверку своих данных, что является еще одной обязанностью и, следовательно, должно жить в другом месте.
- В разных ситуациях требуется разная логика проверки для одного и того же объекта домена.