/// <summary> /// 注册数据类型转换器 /// </summary> /// <param name="sourceType"></param> /// <param name="destType"></param> /// <param name="converter"></param> public static void RegisterConverter(Type sourceType, Type destType, DataTypeConverterBase converter) { lock (_Converters) { DataTypeConverterPair pair = new DataTypeConverterPair(); pair.SourceType = sourceType; pair.DestinationType = destType; if (_Converters.ContainsKey(pair) == false) { _Converters[pair] = converter; } } }
/// <summary> /// 根据类型得到转换器 /// </summary> /// <param name="sourceType"></param> /// <param name="destType"></param> /// <returns></returns> public static DataTypeConverterBase GetConverter(Type sourceType, Type destType) { sourceType.NullCheck("sourceType"); destType.NullCheck("destType"); lock (_Converters) { DataTypeConverterPair pair = new DataTypeConverterPair(); pair.SourceType = sourceType; pair.DestinationType = destType; DataTypeConverterBase converter = null; _Converters.TryGetValue(pair, out converter).FalseThrow <KeyNotFoundException>( "不能找到从类型{0}转换到类型{1}的转换器", sourceType, destType); return(converter); } }