Example #1
0
        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]);
        }
Example #2
0
 /// <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)
 {
 }
 /// <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)
 {
 }
Example #4
0
 public GeneratorDriver(IMemberGetterGenerator memberGetterGenerator, IMemberSetterGenerator memberSetterGenerator)
 {
     this.memberGetterGenerator = memberGetterGenerator;
     this.memberSetterGenerator = memberSetterGenerator;
 }