Example #1
0
 public CompositeIdMember(Type declaringType, Type realType, String name, PrimitiveMember[] members, IMemberTypeProvider memberTypeProvider)
 {
     this.declaringType  = declaringType;
     this.realType       = realType;
     this.name           = name;
     this.members        = members;
     fieldIndexOfMembers = new PrimitiveMember[members.Length];
     Type[] paramTypes = new Type[members.Length];
     for (int a = 0, size = members.Length; a < size; a++)
     {
         PrimitiveMember member = members[a];
         fieldIndexOfMembers[a] = memberTypeProvider.GetMember(realType, CompositeIdMember.FilterEmbeddedFieldName(member.Name));
         paramTypes[a]          = member.RealType;
     }
     realTypeConstructorAccess = realType.GetConstructor(paramTypes);
 }
Example #2
0
        public Object CreateCompositeId(IEntityMetaData metaData, PrimitiveMember compositeIdMember, params Object[] ids)
        {
            IConversionHelper conversionHelper = this.ConversionHelper;
            CompositeIdMember cIdTypeInfoItem  = (CompositeIdMember)compositeIdMember;

            PrimitiveMember[] members = cIdTypeInfoItem.Members;
            for (int a = ids.Length; a-- > 0;)
            {
                Object id          = ids[a];
                Object convertedId = conversionHelper.ConvertValueToType(members[a].RealType, id);
                if (convertedId != id)
                {
                    ids[a] = convertedId;
                }
            }
            return(cIdTypeInfoItem.GetRealTypeConstructorAccess().Invoke(ids));
        }