internal bool tryGetCustomMemberErrorFormatter(object anyObject, string memberName, out CustomMemberErrorFormatter formatter) { formatter = null; var propsByType = _customMemberErrorFormatters .Where(byType => byType.Key.IsAssignableFrom(anyObject.GetType())) .Select(byType => byType.Value) .SelectMany(dict => dict) .ToDictionary(kv => kv.Key, kv => kv.Value); if (propsByType != null && propsByType.TryGetValue(memberName, out formatter)) { return(true); } if (_inner == null) { return(false); } if (_inner.tryGetCustomMemberErrorFormatter(anyObject, memberName, out formatter)) { return(true); } return(false); }
public Settings RegisterMemberErrorFormatterFor(Type type, string memberName, CustomMemberErrorFormatter formatter) { if (type == null) { throw new ArgumentNullException("type"); } if (memberName == null) { throw new ArgumentNullException("memberName"); } if (formatter == null) { throw new ArgumentNullException("formatter"); } Dictionary <string, CustomMemberErrorFormatter> propFormatters; if (!_customMemberErrorFormatters.TryGetValue(type, out propFormatters)) { _customMemberErrorFormatters[type] = (propFormatters = new Dictionary <string, CustomMemberErrorFormatter>()); } propFormatters.Add(memberName, formatter); return(this); }
public Settings RegisterMemberErrorFormatterFor <TOwner, TMember>(Expression <Func <TOwner, TMember> > member, CustomMemberErrorFormatter <TOwner> formatter) { return(RegisterMemberErrorFormatterFor(typeof(TOwner), getMemberName(member), (memberError, memberName, memberOwner, settings) => formatter(memberError, memberName, (TOwner)memberOwner, settings))); }