using System.ComponentModel;

namespace OpenSEMI.ClientBase
{
	public abstract class ValidatorBase : IDataErrorInfo
	{
		private DataErrorInfo<ValidatorBase> DataErrorValidator;

		public string this[string propertyName]
		{
			get
			{
				return GetDataErrorInfo()[propertyName];
			}
		}

		public string Error => GetDataErrorInfo().Error;

		public bool IsValid => string.IsNullOrEmpty(Error);

		private DataErrorInfo<ValidatorBase> GetDataErrorInfo()
		{
			if (DataErrorValidator != null)
			{
				return DataErrorValidator;
			}
			DataErrorValidator = new DataErrorInfo<ValidatorBase>(this);
			return DataErrorValidator;
		}
	}
}