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); }
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 + "'"); } }
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()); }