protected ViewModelBase(PropertyNameValidationType propertyNameValidation) { var shallThrowExceptions = (propertyNameValidation & PropertyNameValidationType.ThrowExceptions) == PropertyNameValidationType.ThrowExceptions; if ((propertyNameValidation & PropertyNameValidationType.UseReflection) == 0) { _reflectedPropertyNames = new HashSet <string>(); IsValidPropertyName = _ => true; } else { BindingFlags bf = (propertyNameValidation & PropertyNameValidationType.AcceptNonPublic) == PropertyNameValidationType.AcceptNonPublic ? BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public : BindingFlags.Instance | BindingFlags.Public; var props = GetType().GetProperties(bf); _reflectedPropertyNames = props.Select(p => p.Name).Distinct().ToHashSet(); var acceptEmpty = (propertyNameValidation & PropertyNameValidationType.AcceptEmptyName) == PropertyNameValidationType.AcceptEmptyName; IsValidPropertyName = name => validIfNameReflected(name, shallThrowExceptions, acceptEmpty); } }
protected ErrorNotifyingViewModelBase(PropertyNameValidationType propertyNameValidation) : base(propertyNameValidation) { }