Fluent 验证规则生成器获取 属性 访问器
Fluent Validation Rule Builder Get Property Accessor
我正在编写一个通过更改跟踪器实体状态工作的验证器。我正在尝试创建一种方法来验证实体是否未更改。
我有一个如下所示的验证器:
ConversationStateValidator : ValidatorByState<Conversation>
{
EntityEntry CurrentEntry { get; set; }
protected override void InitializeModifiedRules()
{
this.RuleFor(x => x.EmployeeUserId).Must().NotChanged(CurrentEntry );
}
}
我不知道如何从 IRuleBuilder
中获取指向 属性 的表达式
static void NotChanged<T, TProperty>(IRuleBuilder<T, TProperty> ruleBuilder, EntityEntry entityEntry)
{
//I want to do something like this to get the x => x.EmployeeUserId
ruleBuilder.GetExpectedPropertyAccessor();
}
有谁知道我如何访问预期的 属性 访问器。
您使用 FluentValidation 的方式有误。验证器是某种类型的应用程序服务。一个验证器实例可以验证多个实体。
AbstractValidator 具有内部验证规则集合,您可以通过反射获取 PropertyRule,但这是错误的方法。
你可以通过半阴暗的方式获得它。这依赖于一个实现细节,但它似乎工作正常,并且没有反射。
public static RuleBuilder<TEntity, TProp> AsRuleBuilder<TEntity, TProp>(this IRuleBuilder<TEntity, TProp> ruleBuilder)
{
return ruleBuilder.As<RuleBuilder<TEntity, TProp>>();
}
我正在编写一个通过更改跟踪器实体状态工作的验证器。我正在尝试创建一种方法来验证实体是否未更改。
我有一个如下所示的验证器:
ConversationStateValidator : ValidatorByState<Conversation>
{
EntityEntry CurrentEntry { get; set; }
protected override void InitializeModifiedRules()
{
this.RuleFor(x => x.EmployeeUserId).Must().NotChanged(CurrentEntry );
}
}
我不知道如何从 IRuleBuilder
中获取指向 属性 的表达式static void NotChanged<T, TProperty>(IRuleBuilder<T, TProperty> ruleBuilder, EntityEntry entityEntry)
{
//I want to do something like this to get the x => x.EmployeeUserId
ruleBuilder.GetExpectedPropertyAccessor();
}
有谁知道我如何访问预期的 属性 访问器。
您使用 FluentValidation 的方式有误。验证器是某种类型的应用程序服务。一个验证器实例可以验证多个实体。
AbstractValidator 具有内部验证规则集合,您可以通过反射获取 PropertyRule,但这是错误的方法。
你可以通过半阴暗的方式获得它。这依赖于一个实现细节,但它似乎工作正常,并且没有反射。
public static RuleBuilder<TEntity, TProp> AsRuleBuilder<TEntity, TProp>(this IRuleBuilder<TEntity, TProp> ruleBuilder)
{
return ruleBuilder.As<RuleBuilder<TEntity, TProp>>();
}