Exemplo n.º 1
0
            public Settings RegisterMemberFormatterFor(Type type, string memberName, CustomMemberFormatter formatter)
            {
                if (type == null)
                {
                    throw new ArgumentNullException("type");
                }
                if (memberName == null)
                {
                    throw new ArgumentNullException("memberName");
                }
                if (formatter == null)
                {
                    throw new ArgumentNullException("formatter");
                }

                Dictionary <string, CustomMemberFormatter> propFormatters;

                if (!_customMemberFormatters.TryGetValue(type, out propFormatters))
                {
                    _customMemberFormatters[type] = (propFormatters = new Dictionary <string, CustomMemberFormatter>());
                }

                propFormatters.Add(memberName, formatter);

                return(this);
            }
Exemplo n.º 2
0
            internal bool tryGetCustomMemberFormatter(object anyObject, string memberName,
                                                      out CustomMemberFormatter formatter)
            {
                formatter = null;

                var propsByType = _customMemberFormatters
                                  .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.tryGetCustomMemberFormatter(anyObject, memberName, out formatter))
                {
                    return(true);
                }

                return(false);
            }
Exemplo n.º 3
0
 public Settings RegisterMemberFormatterFor <TOwner, TProp>(Expression <Func <TOwner, TProp> > member,
                                                            CustomMemberFormatter <TOwner, TProp> formatter)
 {
     return(RegisterMemberFormatterFor(typeof(TOwner), getMemberName(member),
                                       (memberValue, memberName, memberOwner, settings) => formatter((TProp)memberValue, memberName, (TOwner)memberOwner, settings)));
 }