SetPropertyValue() public méthode

Sets the property value.
public SetPropertyValue ( IDictionaryAdapter dictionaryAdapter, string key, object &value, PropertyDescriptor descriptor ) : bool
dictionaryAdapter IDictionaryAdapter The dictionary adapter.
key string The key.
value object The value.
descriptor PropertyDescriptor The descriptor.
Résultat bool
		public object GetPropertyValue(IDictionaryAdapter dictionaryAdapter,
			string key, object storedValue, PropertyDescriptor property, bool ifExists)
		{
			if (storedValue == null || storedValue.Equals(UnassignedGuid))
			{
				storedValue = Guid.NewGuid();
				property.SetPropertyValue(dictionaryAdapter, key, ref storedValue, dictionaryAdapter.This.Descriptor);
			}

			return storedValue;
		}
        public object GetPropertyValue(IDictionaryAdapter dictionaryAdapter,
                                       string key, object storedValue, PropertyDescriptor property, bool ifExists)
        {
            if (storedValue == null || storedValue.Equals(UnassignedGuid))
            {
                storedValue = Guid.NewGuid();
                property.SetPropertyValue(dictionaryAdapter, key, ref storedValue, dictionaryAdapter.This.Descriptor);
            }

            return(storedValue);
        }
Exemple #3
0
        public object GetPropertyValue(
            IDictionaryAdapter dictionaryAdapter,
            string key,
            object storedValue,
            PropertyDescriptor property,
            bool ifExists
            )
        {
            if (storedValue == null && ifExists == false)
            {
                IValueInitializer initializer = null;

                if (Value != null)
                {
                    storedValue = Value;
                }
                else
                {
                    var type =
                        Type ?? GetInferredType(dictionaryAdapter, property, out initializer);

                    if (IsAcceptedType(type))
                    {
                        if (type.IsInterface)
                        {
                            if (property.IsDynamicProperty == false)
                            {
                                if (storedValue == null)
                                {
                                    storedValue = dictionaryAdapter.Create(property.PropertyType);
                                }
                            }
                        }
                        else if (type.IsArray)
                        {
                            storedValue = Array.CreateInstance(type.GetElementType(), 0);
                        }
                        else
                        {
                            if (storedValue == null)
                            {
                                object[]        args        = null;
                                ConstructorInfo constructor = null;

                                if (property.IsDynamicProperty)
                                {
                                    constructor = (
                                        from ctor in type.GetConstructors()
                                        let parms = ctor.GetParameters()
                                                    where
                                                    parms.Length == 1 &&
                                                    parms[0].ParameterType.IsAssignableFrom(
                                            dictionaryAdapter.Meta.Type
                                            )
                                                    select ctor
                                        ).FirstOrDefault();

                                    if (constructor != null)
                                    {
                                        args = new[] { dictionaryAdapter }
                                    }
                                    ;
                                }

                                if (constructor == null)
                                {
                                    constructor = type.GetConstructor(Type.EmptyTypes);
                                }

                                if (constructor != null)
                                {
                                    storedValue = constructor.Invoke(args);
                                }
                            }
                        }
                    }
                }

                if (storedValue != null)
                {
                    using (dictionaryAdapter.SuppressNotificationsBlock())
                    {
                        if (storedValue is ISupportInitialize)
                        {
                            ((ISupportInitialize)storedValue).BeginInit();
                            ((ISupportInitialize)storedValue).EndInit();
                        }
                        if (initializer != null)
                        {
                            initializer.Initialize(dictionaryAdapter, storedValue);
                        }

                        property.SetPropertyValue(
                            dictionaryAdapter,
                            property.PropertyName,
                            ref storedValue,
                            dictionaryAdapter.This.Descriptor
                            );
                    }
                }
            }

            return(storedValue);
        }
		public object GetPropertyValue(IDictionaryAdapter dictionaryAdapter, string key,
									   object storedValue, PropertyDescriptor property, bool ifExists)
		{
			if (storedValue == null && ifExists == false)
			{
				IValueInitializer initializer = null;

				if (Value != null)
				{
					storedValue = Value;
				}
				else
				{
					var type = Type ?? GetInferredType(dictionaryAdapter, property, out initializer);

					if (IsAcceptedType(type))
					{
						if (type.IsInterface)
						{
							if (property.IsDynamicProperty == false)
							{
								if (storedValue == null)
								{
									storedValue = dictionaryAdapter.Create(property.PropertyType);
								}
							}
						}
						else if (type.IsArray)
						{
							storedValue = Array.CreateInstance(type.GetElementType(), 0);
						}
						else
						{
							if (storedValue == null)
							{
								object[] args = null;
								ConstructorInfo constructor = null;

								if (property.IsDynamicProperty)
								{
									constructor = 
										(from ctor in type.GetConstructors()
										 let parms = ctor.GetParameters()
										 where parms.Length == 1 &&
										       parms[0].ParameterType.IsAssignableFrom(dictionaryAdapter.Meta.Type)
										  select ctor).FirstOrDefault();

									if (constructor != null) args = new[] { dictionaryAdapter };
								}

								if (constructor == null)
								{
									constructor = type.GetConstructor(Type.EmptyTypes);
								}

								if (constructor != null)
								{
									storedValue = constructor.Invoke(args);
								}
							}
						}
					}
				}

				if (storedValue != null)
				{
					using (dictionaryAdapter.SuppressNotificationsBlock())
					{
#if !SL3
						if (storedValue is ISupportInitialize)
						{
							((ISupportInitialize)storedValue).BeginInit();
							((ISupportInitialize)storedValue).EndInit();
						}
#endif
						if (initializer != null)
						{
							initializer.Initialize(dictionaryAdapter, storedValue);
						}

						property.SetPropertyValue(dictionaryAdapter, property.PropertyName,
												  ref storedValue, dictionaryAdapter.This.Descriptor);
					}
				}
			}

			return storedValue;
		}