Пример #1
0
 private void EnsureCreator()
 {
     if (_creator == null)
     {
         _creator = MemberReflectionOptimizer.GetCreator(ClassType);
     }
 }
Пример #2
0
        private ExtendedPropertiesMap CreateExtendedPropertiesMap(Type classType)
        {
            var extPropMember = _profile.FindExtendedPropertiesMember(classType);

            if (extPropMember == null)
            {
                return(null);
            }

            return(new ExtendedPropertiesMap(
                       extPropMember.Name,
                       extPropMember.GetReturnType(),
                       MemberReflectionOptimizer.GetGetter(extPropMember),
                       MemberReflectionOptimizer.GetSetter(extPropMember)));
        }
Пример #3
0
        private PersistentMemberMap CreateMemberMap(Type classType, MemberInfo member)
        {
            var memberReturnType = member.GetReturnType();

            var dictionaryAdapter = _profile.GetDictionaryAdapter(classType, member, memberReturnType);

            if (dictionaryAdapter != null)
            {
                return(new DictionaryMemberMap(
                           member.Name,
                           MemberReflectionOptimizer.GetGetter(member),
                           MemberReflectionOptimizer.GetSetter(member),
                           _profile.GetAlias(classType, member),
                           _profile.GetPersistDefaultValue(classType, member),
                           dictionaryAdapter));
            }

            var collectionType = _profile.GetCollectionAdapter(classType, member, memberReturnType);

            if (collectionType != null)
            {
                return(new CollectionMemberMap(
                           member.Name,
                           memberReturnType,
                           MemberReflectionOptimizer.GetGetter(member),
                           MemberReflectionOptimizer.GetSetter(member),
                           _profile.GetAlias(classType, member),
                           _profile.GetPersistDefaultValue(classType, member),
                           collectionType,
                           _profile.GetCollectionElementType(classType, member, memberReturnType)));
            }

            //TODO: reference checking...

            return(new PersistentMemberMap(
                       member.Name,
                       memberReturnType,
                       MemberReflectionOptimizer.GetGetter(member),
                       MemberReflectionOptimizer.GetSetter(member),
                       _profile.GetDefaultValue(classType, member),
                       _profile.GetAlias(classType, member),
                       _profile.GetPersistDefaultValue(classType, member)));
        }
Пример #4
0
        private IdMap CreateIdMap(Type classType)
        {
            var idMember = _profile.FindIdMember(classType);

            if (idMember == null)
            {
                return(null);
            }

            var memberReturnType = idMember.GetReturnType();

            return(new IdMap(
                       idMember.Name,
                       memberReturnType,
                       MemberReflectionOptimizer.GetGetter(idMember),
                       MemberReflectionOptimizer.GetSetter(idMember),
                       _profile.GetIdGenerator(classType, idMember),
                       _profile.GetIdUnsavedValue(classType, idMember)));
        }