Esempio n. 1
0
        private ConfiguredSourceMember(
            Expression rootValue,
            Type type,
            bool isEnumerable,
            bool isSimple,
            string name,
            IList <string> matchedTargetMemberJoinedNames,
            MapperContext mapperContext,
            Member[] childMembers = null)
        {
            _rootValue   = rootValue;
            Type         = type;
            IsEnumerable = isEnumerable;
            IsSimple     = isSimple;
            Name         = name;
            _matchedTargetMemberJoinedNames = matchedTargetMemberJoinedNames;
            _mapperContext = mapperContext;
            _childMembers  = childMembers ?? new[] { Member.RootSource(name, type) };

            if (isSimple)
            {
                return;
            }

            if (isEnumerable)
            {
                ElementType = (childMembers != null)
                    ? childMembers.Last().ElementType
                    : type.GetEnumerableElementType();
            }

            _childMemberCache = mapperContext.Cache.CreateNew <Member, ConfiguredSourceMember>(
                default(HashCodeComparer <Member>));
        }
        public IQualifiedMember RootSource <TSource>()
        {
            var memberKey = QualifiedMemberKey.ForSource <TSource>();

            var rootMember = _memberCache.GetOrAdd(
                memberKey,
                k => QualifiedMember.From(Member.RootSource <TSource>(), _mapperContext));

            return(rootMember);
        }
 private DictionaryEntrySourceMember(
     Type type,
     Func <string> pathFactory,
     QualifiedMember matchedTargetMember,
     Member[] childMembers = null)
 {
     Type                 = type;
     IsEnumerable         = type.IsEnumerable();
     _pathFactory         = pathFactory;
     _matchedTargetMember = matchedTargetMember;
     _childMembers        = childMembers ?? new[] { Member.RootSource("Source", type) };
 }
        public IQualifiedMember RootSource <TSource, TTarget>()
        {
            var rootMember = _memberCache.GetOrAdd(
                QualifiedMemberKey.ForSource <TSource, TTarget>(),
                k =>
            {
                var sourceMember        = QualifiedMember.From(Member.RootSource <TSource>(), _mapperContext);
                var matchedTargetMember = RootTarget <TSource, TTarget>();

                return(GetFinalSourceMember(sourceMember, matchedTargetMember));
            });

            return(rootMember);
        }
 private ConfiguredSourceMember(
     Type type,
     bool isEnumerable,
     string name,
     ICollection <string> matchedTargetMemberJoinedNames,
     MapperContext mapperContext,
     Member[] childMembers = null)
 {
     Type         = type;
     IsEnumerable = isEnumerable;
     Name         = name;
     _matchedTargetMemberJoinedNames = matchedTargetMemberJoinedNames;
     _mapperContext    = mapperContext;
     _childMembers     = childMembers ?? new[] { Member.RootSource(name, type) };
     _childMemberCache = mapperContext.Cache.CreateNew <Member, ConfiguredSourceMember>();
 }
        public IQualifiedMember RootSource <TSource, TTarget>()
        {
            var rootMember = _memberCache.GetOrAdd(
                QualifiedMemberKey.Keys <TSource, TTarget> .Source,
                k =>
            {
                var matchedTargetMember = RootTarget <TSource, TTarget>();

                var sourceMember = QualifiedMember
                                   .CreateRoot(Member.RootSource <TSource>(), _mapperContext)
                                   .SetContext(matchedTargetMember.Context);

                return(GetFinalSourceMember(sourceMember, matchedTargetMember));
            });

            return(rootMember);
        }