public static Func <TSource, IFormatProvider, TTarget> TryGetConverter <TSource, TTarget>( [NotNull] this IValueConverter valueConverter) { if (valueConverter is null) { throw new ArgumentNullException(nameof(valueConverter)); } Func <object, IFormatProvider, object> converter = valueConverter.TryGetConverter( typeof(TSource), typeof(TTarget)); if (converter == null) { return(null); } return((source, formatProvider) => (TTarget)converter(source, formatProvider)); }