コード例 #1
0
        /// <summary>
        ///   Регистрация smart-свойства.
        /// </summary>
        /// <param name="propertyName">Название smart-свойства.</param>
        /// <param name="propertyType">Возвращиемый тип smart-свойства.</param>
        /// <param name="ownerType">Объект, которому принадлежит smart-свойство.</param>
        /// <param name="metadata">Метаданные smart-свойства.</param>
        /// <returns>smart-свойство.</returns>
        public static SmartProperty Register(string propertyName, Type propertyType, Type ownerType, SmartMetadata metadata)
        {
            var result = new SmartProperty
            {
                PropertyName = propertyName,
                PropertyType = propertyType,
                OwnerType    = ownerType,
                Metadata     = metadata
            };

            return(result);
        }
コード例 #2
0
        /// <summary>
        ///   Регистрация smart-свойства "только для чтения".
        /// </summary>
        /// <param name="propertyName">Название smart-свойства.</param>
        /// <param name="propertyType">Возвращиемый тип smart-свойства.</param>
        /// <param name="ownerType">Объект, которому принадлежит smart-свойство.</param>
        /// <param name="defaultValue">Значение smart-свойства по-умолчанию.</param>
        /// <returns>smart-свойство.</returns>
        public static SmartPropertyKey RegisterReadonly(string propertyName, Type propertyType, Type ownerType,
                                                        object defaultValue)
        {
            var key = new SmartProperty
            {
                PropertyName = propertyName,
                PropertyType = propertyType,
                OwnerType    = ownerType,
                Metadata     = new SmartMetadata(defaultValue, true)
            };

            return(new SmartPropertyKey(key));
        }
コード例 #3
0
        /// <summary>
        ///   Регистрация smart-свойства.
        /// </summary>
        /// <param name="propertyName">Название smart-свойства.</param>
        /// <param name="propertyType">Возвращиемый тип smart-свойства.</param>
        /// <param name="ownerType">Объект, которому принадлежит smart-свойство.</param>
        /// <param name="metadata">Метаданные smart-свойства.</param>
        /// <param name="checkValueCallback">Метод обратного вызова для проверки присваиваемого значения smart-свойства.</param>
        /// <returns>smart-свойство.</returns>
        public static SmartProperty Register(string propertyName, Type propertyType, Type ownerType,
                                             SmartMetadata metadata, SmartPropertyCheckValueCallback checkValueCallback)
        {
            var result = new SmartProperty
            {
                PropertyName       = propertyName,
                PropertyType       = propertyType,
                OwnerType          = ownerType,
                Metadata           = metadata,
                CheckValueCallback = checkValueCallback
            };

            return(result);
        }
コード例 #4
0
 /// <summary>
 ///   Конструктор.
 /// </summary>
 /// <param name="property">smart-свойство.</param>
 internal SmartPropertyKey(SmartProperty property)
 {
     Property = property ?? throw new ArgumentNullException(nameof(property));
 }