예제 #1
0
        public Type GetRealType(Type type)
        {
            Type realType = Get(type);

            if (realType != null)
            {
                return(realType);
            }
            IBytecodeEnhancer bytecodeEnhancer = this.BytecodeEnhancer;

            if (bytecodeEnhancer != null)
            {
                realType = bytecodeEnhancer.GetBaseType(type);
            }
            if (realType == null)
            {
                if (typeof(IProxyTargetAccessor).IsAssignableFrom(type))
                {
                    realType = type.BaseType;
                }
            }
            if (realType == null)
            {
                realType = type;
            }
            Put(type, realType);
            return(realType);
        }
예제 #2
0
 public ValueHolderContainerEntry(Type targetType, RelationMember[] members, IBytecodeEnhancer bytecodeEnhancer,
                                  IPropertyInfoProvider propertyInfoProvider, IMemberTypeProvider memberTypeProvider)
 {
     entries = new ValueHolderEntry[members.Length];
     try
     {
         for (int relationIndex = members.Length; relationIndex-- > 0;)
         {
             RelationMember   member  = members[relationIndex];
             ValueHolderEntry vhEntry = new ValueHolderEntry(targetType, member, bytecodeEnhancer, propertyInfoProvider, memberTypeProvider);
             entries[relationIndex] = vhEntry;
         }
     }
     catch (Exception e)
     {
         throw RuntimeExceptionUtil.Mask(e, "Error occured while processing type '" + targetType.FullName + "'");
     }
 }
예제 #3
0
        public ValueHolderEntry(Type targetType, RelationMember member, IBytecodeEnhancer bytecodeEnhancer, IPropertyInfoProvider propertyInfoProvider,
                                IMemberTypeProvider memberTypeProvider)
        {
            this.member     = member;
            this.memberName = member.Name;
            String lastPropertyName = memberName;
            String prefix           = "";

            if (member is IEmbeddedMember)
            {
                IEmbeddedMember embeddedMember = (IEmbeddedMember)member;
                lastPropertyName = embeddedMember.ChildMember.Name;

                prefix = embeddedMember.GetMemberPathString() + ".";
            }
            state       = memberTypeProvider.GetMember(targetType, prefix + ValueHolderIEC.GetInitializedFieldName(lastPropertyName));
            objRefs     = memberTypeProvider.GetMember(targetType, prefix + ValueHolderIEC.GetObjRefsFieldName(lastPropertyName));
            directValue = memberTypeProvider.GetMember(targetType, prefix + lastPropertyName + ValueHolderIEC.GetNoInitSuffix());
        }