예제 #1
0
            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);
            }
예제 #2
0
            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);
            }
예제 #3
0
 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)));
 }