示例#1
0
 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);
     }
 }
示例#2
0
 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;
 }
示例#3
0
 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);
        }
示例#5
0
        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);
        }
示例#6
0
            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);
                    }
                }
            }
示例#7
0
 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);
 }
示例#8
0
 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);
 }