示例#1
0
 public Mapper(Type klassSrc, Type klassDest)
 {
     this.klassSrc  = klassSrc;
     this.klassDest = klassDest;
     mappingArray   = false;
     ctorDest       = klassDest.GetConstructors();
     cache          = new CacheStructure();
     if (klassSrc.IsPrimitive && klassDest.IsPrimitive)
     {
         handler = new PrimitiveHandler(klassSrc, klassDest);
     }
     else
     {
         foreach (ConstructorInfo constructorInfo in ctorDest)
         {
             if (constructorInfo.GetParameters().Length == 0)
             {
                 handler = new PropertyHandler(klassSrc, klassDest);
                 break;
             }
         }
         if (handler == null)
         {
             handler = new ParameterHandler(klassSrc, klassDest, ctorDest[0]);
         }
     }
 }
示例#2
0
        public static IMapper Build(Type klassSrc, Type klassDest)
        {
            if (cache == null)
            {
                cache = new CacheStructure();
            }
            IMapper mapper = cache.GetMapper(klassSrc, klassDest);

            if (mapper == null)
            {
                mapper = new Mapper(klassSrc, klassDest);
                cache.Add(klassSrc, klassDest, mapper);
            }
            return(mapper);
        }