private CustomConverterDelegate findCustomConverterMethod(Type from, Type to) { lock (_customConvertersLock) { CustomConverterDelegate converter = null; if (_customConverters.TryGetValue(Tuple.Create(from, to), out converter)) { return(converter); } else { return(null); } } }
/// <summary> /// Registers custom converter for sourceType to targetType conversion /// </summary> /// <param name="sourceType"></param> /// <param name="targetType"></param> /// <param name="converter"></param> public void registerCustomConverter(Type sourceType, Type targetType, CustomConverterDelegate converter) { if (sourceType == null) { throw new ArgumentNullException(nameof(sourceType)); } if (targetType == null) { throw new ArgumentNullException(nameof(targetType)); } if (converter == null) { throw new ArgumentNullException(nameof(converter)); } lock (_customConvertersLock) { // Add customer converter. Override previous registered converters with same key. _customConverters[Tuple.Create(sourceType, targetType)] = converter; } }
/// <summary> /// Registers custom converter for T_Source to T_Target conversion /// </summary> /// <typeparam name="T_Source"></typeparam> /// <typeparam name="T_Target"></typeparam> /// <param name="converter"></param> public void registerCustomConverter <T_Source, T_Target> (CustomConverterDelegate converter) { registerCustomConverter(typeof(T_Source), typeof(T_Target), converter); }