using GalaSoft.MvvmLight;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Linq;
namespace GroupLine.App.ModelDto
{
public class ValidateModelBase : ObservableObject, IDataErrorInfo
{
public ValidateModelBase()
{
}
#region 属性
///
/// 表当验证错误集合
///
public Dictionary dataErrors = new Dictionary();
///
/// 是否验证通过
///
public Boolean IsValidated
{
get
{
if (dataErrors != null && dataErrors.Count > 0)
{
return false;
}
return true;
}
}
#endregion
public string this[string columnName]
{
get
{
ValidationContext vc = new ValidationContext(this, null, null);
vc.MemberName = columnName;
var res = new List();
var result = Validator.TryValidateProperty(this.GetType().GetProperty(columnName).GetValue(this, null), vc, res);
if (res.Count > 0)
{
String errorInfo = string.Join(Environment.NewLine, res.Select(r => r.ErrorMessage).ToArray());
AddDic(dataErrors, columnName, errorInfo);
return errorInfo;
}
RemoveDic(dataErrors, columnName);
return null;
}
}
public string Error
{
get
{
return null;
}
}
#region 附属方法
///
/// 移除字典
///
///
///
private void RemoveDic(Dictionary dics, String dicKey)
{
dics.Remove(dicKey);
}
///
/// 添加字典
///
///
///
private void AddDic(Dictionary dics, String dicKey, string dicValue)
{
if (!dics.ContainsKey(dicKey)) dics.Add(dicKey, dicValue);
}
#endregion
}
}