我想使用反射遍历我的模型属性,然后将它们传递给一个方法,期望我的属性作为 en 表达式。
例如,给定这个模型:
public class UserModel
{
public string Name { get; set; }
}
这个验证器类:
public class UserValidator : ValidatorBase<UserModel>
{
public UserValidator()
{
this.RuleFor(m => m.Username);
}
}
还有我的 ValidatorBase 类:
public class ValidatorBase<T>
{
public ValidatorBase()
{
foreach (PropertyInfo property in
this.GetType().BaseType
.GetGenericArguments()[0]
.GetProperties(BindingFlags.Public | BindingFlags.Insance))
{
this.RuleFor(m => property); //This line is incorrect!!
}
}
public void RuleFor<TProperty>(Expression<Func<T, TProperty>> expression)
{
//Do some stuff here
}
}
问题在于ValidatorBase()
构造函数——假设我有PropertyInfo
我需要的属性,我应该将什么作为方法中的expression
参数传递给RuleFor
它,这样它就可以像UserValidator()
构造函数中的行一样工作?
或者,我应该使用其他东西PropertyInfo
来让它工作吗?