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]); } } }
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); }