public TwoWaysTypeAdapterSetter <TSource, TDestination> Map <TDestinationMember>(
     Expression <Func <TDestination, TDestinationMember> > destinationMember,
     string sourceMemberName)
 {
     SourceToDestinationSetter.Map(destinationMember, sourceMemberName);
     DestinationToSourceSetter.Map(sourceMemberName, destinationMember);
     return(this);
 }
 public TwoWaysTypeAdapterSetter <TSource, TDestination> Map <TDestinationMember, TSourceMember>(
     Expression <Func <TDestination, TDestinationMember> > member,
     Expression <Func <TSource, TSourceMember> > source)
 {
     SourceToDestinationSetter.Map(member, source);
     DestinationToSourceSetter.Map(source, member);
     return(this);
 }
 public TwoWaysTypeAdapterSetter <TSource, TDestination> Include <TDerivedSource, TDerivedDestination>()
     where TDerivedSource : class, TSource
     where TDerivedDestination : class, TDestination
 {
     SourceToDestinationSetter.Include <TDerivedSource, TDerivedDestination>();
     DestinationToSourceSetter.Include <TDerivedDestination, TDerivedSource>();
     return(this);
 }
 public TwoWaysTypeAdapterSetter <TSource, TDestination> AddDestinationTransform <TDestinationMember>(Expression <Func <TDestinationMember, TDestinationMember> > transform)
 {
     SourceToDestinationSetter.AddDestinationTransform(transform);
     if (typeof(TSource) != typeof(TDestination))
     {
         DestinationToSourceSetter.AddDestinationTransform(transform);
     }
     return(this);
 }
 public TwoWaysTypeAdapterSetter <TSource, TDestination> Ignore(params string[] names)
 {
     SourceToDestinationSetter.Ignore(names);
     foreach (var name in names)
     {
         DestinationToSourceSetter.IgnoreMember((model, _) => model.Name == name);
     }
     return(this);
 }
 public TwoWaysTypeAdapterSetter <TSource, TDestination> NameMatchingStrategy(NameMatchingStrategy value)
 {
     SourceToDestinationSetter.NameMatchingStrategy(value);
     DestinationToSourceSetter.NameMatchingStrategy(new NameMatchingStrategy
     {
         SourceMemberNameConverter      = value.DestinationMemberNameConverter,
         DestinationMemberNameConverter = value.SourceMemberNameConverter,
     });
     return(this);
 }
 public TwoWaysTypeAdapterSetter <TSource, TDestination> Map(string destinationMemberName, string sourceMemberName)
 {
     SourceToDestinationSetter.Map(destinationMemberName, sourceMemberName);
     DestinationToSourceSetter.Map(sourceMemberName, destinationMemberName);
     return(this);
 }
 public TwoWaysTypeAdapterSetter <TSource, TDestination> IncludeAttribute(params Type[] types)
 {
     SourceToDestinationSetter.IncludeAttribute(types);
     DestinationToSourceSetter.IncludeAttribute(types);
     return(this);
 }
 public TwoWaysTypeAdapterSetter <TSource, TDestination> IncludeMember(Func <IMemberModel, MemberSide, bool> predicate)
 {
     SourceToDestinationSetter.IncludeMember(predicate);
     DestinationToSourceSetter.IgnoreMember((model, side) => predicate(model, side == MemberSide.Source ? MemberSide.Destination : MemberSide.Source));
     return(this);
 }
 public TwoWaysTypeAdapterSetter <TSource, TDestination> MapToConstructor(bool value)
 {
     SourceToDestinationSetter.MapToConstructor(value);
     DestinationToSourceSetter.MapToConstructor(value);
     return(this);
 }
 public TwoWaysTypeAdapterSetter <TSource, TDestination> GetMemberName(Func <IMemberModel, string> func)
 {
     SourceToDestinationSetter.GetMemberName(func);
     DestinationToSourceSetter.GetMemberName(func);
     return(this);
 }
 public TwoWaysTypeAdapterSetter <TSource, TDestination> AvoidInlineMapping(bool value)
 {
     SourceToDestinationSetter.AvoidInlineMapping(value);
     DestinationToSourceSetter.AvoidInlineMapping(value);
     return(this);
 }
 public TwoWaysTypeAdapterSetter <TSource, TDestination> IgnoreNonMapped(bool value)
 {
     SourceToDestinationSetter.IgnoreNonMapped(value);
     DestinationToSourceSetter.IgnoreNonMapped(value);
     return(this);
 }
 public TwoWaysTypeAdapterSetter <TSource, TDestination> Inherits <TBaseSource, TBaseDestination>()
 {
     SourceToDestinationSetter.Inherits <TBaseSource, TBaseDestination>();
     DestinationToSourceSetter.Inherits <TBaseDestination, TBaseSource>();
     return(this);
 }
 public TwoWaysTypeAdapterSetter <TSource, TDestination> PreserveReference(bool value)
 {
     SourceToDestinationSetter.PreserveReference(value);
     DestinationToSourceSetter.PreserveReference(value);
     return(this);
 }
 public TwoWaysTypeAdapterSetter <TSource, TDestination> EnumMappingStrategy(EnumMappingStrategy strategy)
 {
     SourceToDestinationSetter.EnumMappingStrategy(strategy);
     DestinationToSourceSetter.EnumMappingStrategy(strategy);
     return(this);
 }
 public TwoWaysTypeAdapterSetter <TSource, TDestination> ShallowCopyForSameType(bool value)
 {
     SourceToDestinationSetter.ShallowCopyForSameType(value);
     DestinationToSourceSetter.ShallowCopyForSameType(value);
     return(this);
 }
 public TwoWaysTypeAdapterSetter <TSource, TDestination> MaxDepth(int value)
 {
     SourceToDestinationSetter.MaxDepth(value);
     DestinationToSourceSetter.MaxDepth(value);
     return(this);
 }
 public TwoWaysTypeAdapterSetter <TSource, TDestination> EnableNonPublicMembers(bool value)
 {
     SourceToDestinationSetter.EnableNonPublicMembers(value);
     DestinationToSourceSetter.EnableNonPublicMembers(value);
     return(this);
 }