public PropertyInfoItemASM(IPropertyInfo property, bool allowNullEquivalentValue) : base(property, allowNullEquivalentValue) { if (property.IsReadable) { getDelegate = TypeUtility.GetMemberGetDelegate(property.DeclaringType, property.Name); } if (property.IsWritable) { setDelegate = TypeUtility.GetMemberSetDelegate(property.DeclaringType, property.Name); } }
public override void RefreshAccessors(Type realType) { base.RefreshAccessors(realType); if (Getter != null) { getDelegate = TypeUtility.GetMemberGetDelegate(Getter.DeclaringType, Getter.Name); } if (Getter != null) { setDelegate = TypeUtility.GetMemberSetDelegate(Getter.DeclaringType, Setter.Name); } IsReadable = getDelegate != null; IsWritable = setDelegate != null; }
public MethodPropertyInfoASM(Type entityType, String propertyName, MethodInfo getter, MethodInfo setter) : base(entityType, propertyName, getter, setter) { if (Getter != null) { getDelegate = TypeUtility.GetMemberGetDelegate(getter.DeclaringType, getter.Name); } if (Getter != null) { setDelegate = TypeUtility.GetMemberSetDelegate(setter.DeclaringType, setter.Name); } IsReadable = getDelegate != null; IsWritable = setDelegate != null; }
GetCachedMemberSetDelegate <MemberType>(string memberName) { if (_memberSetDelegates.ContainsKey(memberName)) { return((MemberSetDelegate <MemberType>)_memberSetDelegates[memberName]); } MemberSetDelegate <MemberType> returnValue = GetMemberSetDelegate <MemberType>(memberName); lock (_memberSetDelegates) { _memberSetDelegates[memberName] = returnValue; } return(returnValue); }
public static MemberSetDelegate GetMemberSetDelegate(Type type, String memberName, bool tryOnly = false) { GetDelegateKey key = new GetDelegateKey(type, memberName); MemberSetDelegate value = _memberSetDelegates.Get(key); if (value != null) { return(value); } MemberSetDelegate delegates = GetMemberSetDelegateIntern(type, memberName, tryOnly); if (delegates == null) { return(null); } _memberSetDelegates.Put(key, delegates); return(delegates); }
public PropertyEntry(Type type, String propertyName) { this.propertyName = propertyName; LinkedHashSet <String> propertyNames = new LinkedHashSet <String>(); propertyNames.Add(propertyName); PropertyInfo prop = type.GetProperty(propertyName); doesModifyToBeUpdated = !AnnotationUtil.IsAnnotationPresent <IgnoreToBeUpdated>(prop, false); isParentChildSetter = AnnotationUtil.IsAnnotationPresent <ParentChild>(prop, false); isAddedRemovedCheckNecessary = !prop.PropertyType.IsPrimitive && ImmutableTypeSet.GetUnwrappedType(prop.PropertyType) == null && !typeof(String).Equals(prop.PropertyType) && !prop.PropertyType.IsValueType; EvaluateDependentProperties(type, prop, propertyNames); while (true) { int startCount = propertyNames.Count; foreach (String currPropertyName in new List <String>(propertyNames)) { PropertyInfo currProp = type.GetProperty(currPropertyName); if (currProp.CanWrite) { continue; } // Is is just an evaluating property which has to be re-evaluated because of the change on the current property EvaluateDependentProperties(type, currProp, propertyNames); } if (startCount == propertyNames.Count) { break; } } this.propertyNames = propertyNames.ToArray(); bool firesToBeCreatedPCE = false; unknownValues = CreateArrayOfValues(UNKNOWN_VALUE, this.propertyNames.Length); pceArgs = new PropertyChangedEventArgs[propertyNames.Count]; int index = 0; foreach (String invokedPropertyName in propertyNames) { pceArgs[index] = new PropertyChangedEventArgs(invokedPropertyName); index++; firesToBeCreatedPCE |= "ToBeCreated".Equals(invokedPropertyName); } this.firesToBeCreatedPCE = firesToBeCreatedPCE; if (prop.CanRead) { getDelegate = TypeUtility.GetMemberGetDelegate(type, ValueHolderIEC.GetGetterNameOfRelationPropertyWithNoInit(prop.Name), true); if (getDelegate == null) { getDelegate = TypeUtility.GetMemberGetDelegate(type, prop.Name); } } if (prop.CanWrite) { setDelegate = TypeUtility.GetMemberSetDelegate(type, ValueHolderIEC.GetSetterNameOfRelationPropertyWithNoInit(prop.Name), true); if (setDelegate == null) { setDelegate = TypeUtility.GetMemberSetDelegate(type, prop.Name); } } }
public FieldPropertyInfoASM(Type entityType, String propertyName, FieldInfo field) : base(entityType, propertyName, field) { getDelegate = TypeUtility.GetMemberGetDelegate(field.DeclaringType, field.Name); setDelegate = TypeUtility.GetMemberSetDelegate(field.DeclaringType, field.Name); }
public FieldInfoItemASM(FieldInfo field, bool allowNullEquivalentValue, String propertyName) : base(field, allowNullEquivalentValue, propertyName) { getDelegate = TypeUtility.GetMemberGetDelegate(field.DeclaringType, field.Name); setDelegate = TypeUtility.GetMemberSetDelegate(field.DeclaringType, field.Name); }