示例#1
0
		//-------------------------------------------------------------------------------------
		/// <summary>
		/// Вовзращает строковое значение свойства для указанного объекта, содержащего коллекцию значений свойств.
		/// </summary>
		/// <param name="obj">Объект, содержащий коллекцию значений свойств.</param>
		/// <param name="selfOnly">Определяет, возвращать ли значения наследуемых всойств</param>
		/// <returns></returns>
		public virtual string GetValueAsString(IPulsarPropertiesValuesContainer obj, bool selfOnly = false)
		{
			return ValueToString(GetValue(obj, selfOnly));
		}
示例#2
0
		//-------------------------------------------------------------------------------------
		/// <summary>
		/// Устанавливает значение свойства для указанного объекта, содержащего коллекцию значений свойств.
		/// </summary>
		/// <param name="obj">Объект, содержащий коллекцию значений свойств.</param>
		/// <param name="value">Устанавливаемое значение.</param>
		/// <returns></returns>
		public virtual void SetValue(IPulsarPropertiesValuesContainer obj, object value)
		{
			if(obj == null)
				throw new ArgumentNullException("obj");
			if(obj.PropertiesValues == null)
				throw new PulsarException("У объекта [{0}] не определена коллекция значений свойств!");
			BeginRead();
			if(value != null && Type == PulsarPropertyType.Enum && Enums is IKeyedList && IsListValue == false)
			{
				UInt key = 0;
				if(value is UInt)
				{
					key = (UInt)value;
					if(((IKeyedList)Enums).ContainsKey(key) == false)
						key = 0;
				}
				else
					key = ((IKeyedList)Enums).KeyOf(value);
				if(key == 0)
					throw new PulsarException("Не найден ключ элемента [{0}] свойства [{1}]!", value, this);
				value = key;
			}
			if(Type == PulsarPropertyType.Check && value != null)
			 value = (byte)1;
			if(obj is IReadWriteLockObject && ((IReadWriteLockObject)obj).IsWriteLocked == false)
			 ((IReadWriteLockObject)obj).BeginWrite();
			obj.PropertiesValues.DirectInject(this, value);
		}
示例#3
0
		//-------------------------------------------------------------------------------------
		/// <summary>
		/// Вовзращает значение свойства для указанного объекта, содержащего коллекцию значений свойств.
		/// </summary>
		/// <param name="obj">Объект, содержащий коллекцию значений свойств.</param>
		/// <param name="selfOnly">Определяет, возвращать ли значения наследуемых всойств</param>
		/// <returns></returns>
		public virtual object GetValue(IPulsarPropertiesValuesContainer obj, bool selfOnly = false)
		{
			BeginRead(); 
			if(obj == null)
				throw new ArgumentNullException("obj");
			if(obj is IReadWriteLockObject && ((IReadWriteLockObject)obj).IsReadLocked == false)
				((IReadWriteLockObject)obj).BeginRead();
			if(obj.PropertiesValues == null || obj.PropertiesValues[this] == null)
				return null;
			return obj.PropertiesValues[this];
		}