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); }
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); }
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))); }