Employee エンティティ クラスでプロパティとして使用される値オブジェクト クラス FullName があるとします。FullName には、ミドルネームのイニシャル、ニックネームなどを含めることができます。しかし、ドメインの観点からは、FullName の FirstName プロパティと LastName プロパティの両方が評価されることのみを強制したいと考えています。
これを、属性ではなく EmployeeValidator : ValidationDef{Employee} オブジェクトの一部として表現したいと思います。
最初に FullName のクラス バリデーター (つまり、FirstAndLAstNameRequired) を作成し、次に Employee の FullName プロパティが Valid であると宣言する必要がありますか?
余談ですが、このドキュメンテーションは今でも最高のもののように見えますが、3 年も経っているように見えます。私が見逃した新しいものはありますか?
乾杯、
ベリル
アップデート
私はまだこれを理解していませんが、NHib Validator 情報の最良のソースと思われるものを見つけました: http://fabiomaulo.blogspot.com/search/label/Validator
質問をより適切に表現するための疑似コードも次のとおりです。
/// <summary>A person's name.</summary>
public class FullName
{
public virtual string FirstName { get; set; }
public virtual string LastName { get; set; }
public virtual string MiddleName { get; set; }
public virtual string NickName { get; set; }
}
public class EmployeeValidator : ValidationDef<Employee>
{
public EmployeeValidator()
{
Define(x => x.FullName).FirstAndLastNameRequired(); // how to get here!!
}
}
デビッドのアップデート
public class FullNameValidator : ValidationDef<FullName>
{
public FullNameValidator() {
Define(n => n.FirstName).NotNullable().And.NotEmpty().And.MaxLength(25);
Define(n => n.LastName).NotNullable().And.NotEmpty().And.MaxLength(35);
// not really necessary but cool that you can do this
ValidateInstance
.By(
(name, context) => !name.FirstName.IsNullOrEmptyAfterTrim() && !name.LastName.IsNullOrEmptyAfterTrim())
.WithMessage("Both a First and Last Name are required");
}
}
public class EmployeeValidator : ValidationDef<Employee>
{
public EmployeeValidator()
{
Define(x => x.FullName).IsValid(); // *** doesn't compile !!!
}
}