/// <summary>
        ///     Initializes a new instance of the <see cref="PropertyObserver{TResult}" /> class.
        /// </summary>
        /// <param name="propertyExpression">The property expression.</param>
        /// <exception cref="ArgumentNullException">propertyExpression is null.</exception>
        private PropertyObserver([NotNull] Expression <Func <TResult> > propertyExpression)
        {
            if (propertyExpression == null)
            {
                throw new ArgumentNullException(nameof(propertyExpression));
            }

            this.Observer           = PropertyObserver.Observes(propertyExpression, () => this.Update.Raise(), false);
            this.PropertyExpression = this.Observer.ExpressionString;
        }
示例#2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="PropertyValueObserver{TParameter,TResult}" /> class.
        /// </summary>
        /// <param name="parameter1">The parameter1.</param>
        /// <param name="parameter2">The parameter2.</param>
        /// <param name="propertyExpression">The property expression.</param>
        /// <exception cref="ArgumentNullException">parameter1
        /// or
        /// propertyExpression</exception>
        public PropertyObserver([NotNull] TParameter1 parameter1, [NotNull] TParameter2 parameter2,
                                Expression <Func <TParameter1, TParameter2, TResult> > propertyExpression)
        {
            this.Parameter1 = parameter1 ?? throw new ArgumentNullException(nameof(parameter1));
            this.Parameter2 = parameter2 ?? throw new ArgumentNullException(nameof(parameter2));

            if (propertyExpression == null)
            {
                throw new ArgumentNullException(nameof(propertyExpression));
            }

            this.Observer =
                PropertyObserver.Observes(parameter1, parameter2, propertyExpression, () => this.Update.Raise());
            this.PropertyExpression = Observer.ExpressionString;
        }
示例#3
0
        /// <summary>
        /// Initializes a new instance of the <see cref="PropertyObserver{TParameter,TResult}" /> class.
        /// </summary>
        /// <param name="parameter">The owner.</param>
        /// <param name="propertyExpression">The property expression.</param>
        /// <exception cref="ArgumentNullException">
        /// parameter1 or propertyExpression is null.
        /// </exception>
        public PropertyObserver(TParameter1 parameter, Expression <Func <TParameter1, TResult> > propertyExpression)
        {
            if (parameter == null)
            {
                throw new ArgumentNullException(nameof(parameter));
            }

            if (propertyExpression == null)
            {
                throw new ArgumentNullException(nameof(propertyExpression));
            }

            this.Parameter          = parameter;
            this.Observer           = PropertyObserver.Observes(parameter, propertyExpression, () => this.Update.Raise(), false);
            this.PropertyExpression = this.Observer.ExpressionString;
        }