internal virtual IMemberMapping CreateFor(Type klassSrc, Type klassDst)
 {
     if (klassDst.GetTypeInfo().IsValueType || klassDst.GetConstructor(Type.EmptyTypes) != null)
     {
         return(MemberToMemberMapping.Create(klassSrc, klassDst, IsToMapProperties, IsToMapFields, AttributeType));
     }
     else
     {
         return(MemberToConstructorMapping.Create(klassSrc, klassDst, IsToMapProperties, IsToMapFields, AttributeType));
     }
 }
        public static new MemberToConstructorMapping Create(Type klassSrc, Type klassDst, bool isToMapProperties = true, bool isToMapFields = false, Type attributeTypeToMap = null)
        {
            ConstructorInfo constructorInfo = FindTheBestConstructor(klassDst);

            if (constructorInfo == null || constructorInfo.GetParameters().Length <= 0)
            {
                throw new NotSupportedException("MemberToConstructorMapping only apply to objects with public construtors of one or more parameters");
            }
            MemberToConstructorMapping mapping = new MemberToConstructorMapping(klassSrc, klassDst, isToMapFields, isToMapProperties, attributeTypeToMap, constructorInfo);

            mapping.PrepareMapping();
            return(mapping);
        }