public MapperEmit(Type klassSrc, Type klassDest) { this.klassSrc = klassSrc; this.klassDest = klassDest; mapFor = new Dictionary <string, Func <object> >(); ctorDest = klassDest.GetConstructors(); if (klassSrc.IsPrimitive && klassDest.IsPrimitive) { handler = new PrimitiveHandlerEmit(klassSrc, klassDest); } else { foreach (ConstructorInfo constructorInfo in ctorDest) { if (constructorInfo.GetParameters().Length == 0) { handler = new PropertyHandlerEmit(klassSrc, klassDest); break; } } if (handler == null) { handler = new ParameterHandlerEmit(klassSrc, klassDest, ctorDest[0]); } } }
public MapperEmit Bind(MappingEmit m) { if (m.klass != handler.GetKlass()) { if (m.klass == typeof(FieldInfo)) { handler = new FieldHandlerEmit(klassSrc, klassDest); } else { handler = new AttributeHandlerEmit(klassSrc, klassDest, m.klass); } } return(this); }