Beispiel #1
0
        protected virtual MemberMapper CreateMemberMapper(MapMemberInfo mapMemberInfo)
        {
            if (mapMemberInfo == null)
            {
                throw new ArgumentNullException("mapMemberInfo");
            }

            MemberMapper mm = null;

            MemberMapperAttribute attr = mapMemberInfo.MemberAccessor.GetAttribute <MemberMapperAttribute>();

            if (attr == null)
            {
                object[] attrs = TypeHelper.GetAttributes(mapMemberInfo.Type, typeof(MemberMapperAttribute));

                foreach (MemberMapperAttribute a in attrs)
                {
                    if (a.MemberType == null)
                    {
                        mm = a.MemberMapper;
                        break;
                    }
                }
            }
            else
            {
                mm = attr.MemberMapper;
            }

            if (mm == null)
            {
                object[] attrs = TypeHelper.GetAttributes(
                    mapMemberInfo.MemberAccessor.MemberInfo.DeclaringType, typeof(MemberMapperAttribute));

                foreach (MemberMapperAttribute a in attrs)
                {
                    if (a.MemberType == mapMemberInfo.Type)
                    {
                        mm = a.MemberMapper;
                        break;
                    }
                }
            }

            if (mm == null)
            {
                mm = MemberMapper.CreateMemberMapper(mapMemberInfo);
            }

            mm.Init(mapMemberInfo);

            return(mm);
        }
Beispiel #2
0
        protected virtual MemberMapper CreateMemberMapper(MapMemberInfo mapMemberInfo)
        {
            if (mapMemberInfo == null)
            {
                throw new ArgumentNullException("mapMemberInfo");
            }

            MemberMapper mm = null;

            var attr = mapMemberInfo.MemberAccessor.GetAttribute <MemberMapperAttribute>();

            MemberExtension ext;

            if (_extension != null && _extension.Members.TryGetValue(mapMemberInfo.MemberName, out ext))
            {
                AttributeExtensionCollection attrExt;

                if (ext.Attributes.TryGetValue("MemberMapper", out attrExt))
                {
                    attr = new MemberMapperAttribute((Type)attrExt[0].Values["MemberMapperType"]);
                }
            }

            if (attr == null)
            {
                var attrs = TypeHelper.GetAttributes(mapMemberInfo.Type, typeof(MemberMapperAttribute));

                foreach (MemberMapperAttribute a in attrs)
                {
                    if (a.MemberType == null)
                    {
                        mm = a.MemberMapper;
                        break;
                    }
                }
            }
            else
            {
                mm = attr.MemberMapper;
            }

            if (mm == null)
            {
                var attrs = TypeHelper.GetAttributes(
                    mapMemberInfo.MemberAccessor.MemberInfo.DeclaringType, typeof(MemberMapperAttribute));

                foreach (MemberMapperAttribute a in attrs)
                {
                    if (a.MemberType == mapMemberInfo.Type)
                    {
                        mm = a.MemberMapper;
                        break;
                    }
                }
            }

            if (mm == null)
            {
                mm = MemberMapper.CreateMemberMapper(mapMemberInfo);
            }

            mm.Init(mapMemberInfo);

            return(mm);
        }