我正在开始一个新的WPF MVVM应用程序,我试图了解如何处理验证“比以前更好” - 在模型和viewModel上使用IDataErrorInfo
之前。它工作正常,但以后很难扩展,在大多数情况下需要大量的手动布线。我确信IDataErrorInfo
仍然是连接ViewModel验证的好方法,但是我希望能够使用企业库来验证模型,但有没有办法一次实际验证一个属性而不是整个对象?
还有其他一些聪明的方法来使用EL生成的配置吗?
有任何想法或其他建议吗?
更新
我想我发现了一些或多或少的东西,我一直在寻找: (来自http://entlib.codeplex.com/discussions/233057)
Type type = typeof(Customer);
PropertyInfo property = type.GetProperty("Name");
string ruleset = string.Empty;
var source = ValidationSpecificationSource.All;
var builder = new ReflectionMemberValueAccessBuilder();
Validator validator =
PropertyValidationFactory.GetPropertyValidator(
type, property, ruleset, source, builder);
ValidationResults results = validator.Validate(customer);
但这意味着我的ViewModel
必须处理模型实例,而不是做类似的事情:
private string name;
public string Name
{
get { ... }
set { ...}
}
看起来我必须处理模型实例或在ViewModel
层进行验证 - 我希望避免这种情况。
...或者我错过了一些对大多数人来说非常有名和明显的东西......?
欢迎任何建议。