/// <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); }
/// <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)); }
/// <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); }
/// <summary> /// Конструктор. /// </summary> /// <param name="property">smart-свойство.</param> internal SmartPropertyKey(SmartProperty property) { Property = property ?? throw new ArgumentNullException(nameof(property)); }