public static ConvertHandler GetConvertHandler(Type inputType, Type outputType, object inputObject, object outputObject, Dictionary <string, string> mappingNames, List <string> ignoreList, Dictionary <int, string> mappingOrders, bool mappingSpecifiedOnly) { string cachedKey = GetCachedKey(inputType, outputType, mappingNames, ignoreList, mappingOrders, mappingSpecifiedOnly); if (!cachedConvertHandler.ContainsKey(cachedKey)) { lock (cachedConvertHandler) { if (!cachedConvertHandler.ContainsKey(cachedKey)) { Type getterGeneratorType = GetMemberGetterGenerator(inputType); Type setterGeneratorType = GetMemberSetterGenerator(outputType); IMemberGetterGenerator getterGenerator = (IMemberGetterGenerator)Activator.CreateInstance(getterGeneratorType); IMemberSetterGenerator setterGenerator = (IMemberSetterGenerator)Activator.CreateInstance(setterGeneratorType); GeneratorDriver driver = null; if (typeof(GeneratorDriver).IsAssignableFrom(setterGeneratorType)) { driver = (GeneratorDriver)Activator.CreateInstance(setterGeneratorType, getterGenerator, setterGenerator); } else { driver = (GeneratorDriver)Activator.CreateInstance(getterGeneratorType, getterGenerator, setterGenerator); } cachedConvertHandler.Add(cachedKey, driver.GetConvertHandler(inputType, outputType, inputObject, outputObject, mappingNames, ignoreList, mappingOrders, mappingSpecifiedOnly)); } } } return(cachedConvertHandler[cachedKey]); }
/// <summary> /// inherite base /// </summary> /// <param name="memberGetterGenerator">The member getter generator.</param> /// <param name="memberSetterGenerator">The member setter generator.</param> public ObjectGetterGenerator(IMemberGetterGenerator memberGetterGenerator, IMemberSetterGenerator memberSetterGenerator) : base(memberGetterGenerator, memberSetterGenerator) { }
public GeneratorDriver(IMemberGetterGenerator memberGetterGenerator, IMemberSetterGenerator memberSetterGenerator) { this.memberGetterGenerator = memberGetterGenerator; this.memberSetterGenerator = memberSetterGenerator; }