Beispiel #1
0
 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]);
         }
     }
 }
Beispiel #2
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);
 }