Ejemplo n.º 1
0
        /// <summary>
        /// Resolves a formatter for the specified type. The state of the provided OverrideFormatterSet
        /// has a primary affect on the chosen formatter.
        /// </summary>
        /// <param name="type"></param>
        /// <param name="formatters"></param>
        /// <returns></returns>
        public IValueFormatter Resolve(Type type, OverrideFormatterSet formatters = null)
        {
            if (formatters != null && formatters.Formatter != null)
            {
                return(formatters.Formatter);
            }

            if (ContainsKey(type))
            {
                if (formatters != null && formatters.Any() && formatters.Contains(type))
                {
                    return(null);
                }

                return(this[type]);
            }

            foreach (var pair in this)
            {
                if (pair.Key.IsAssignableFrom(type))
                {
                    if (formatters != null && formatters.Any() && formatters.Contains(pair.Key))
                    {
                        continue;
                    }

                    return(pair.Value);
                }
            }

            return(null);
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Resolves a formatter for the specified type. The state of the provided OverrideFormatterSet
 /// has a primary affect on the chosen formatter.
 /// </summary>
 /// <typeparam name="TModel"></typeparam>
 /// <param name="formatters"></param>
 /// <returns></returns>
 public IValueFormatter Resolve <TModel>(OverrideFormatterSet formatters = null)
 {
     return(Resolve(typeof(TModel), formatters));
 }