예제 #1
0
        /// <summary>
        /// Creates dependency chain of <see cref="DependencyNode{T}"/> instances for a given
        /// expression.
        /// </summary>
        /// <typeparam name="T">The type of the expression's compiled return value.</typeparam>
        /// <param name="settings">Settings that define the dependency graph, change listeners
        /// and monitoring behaviour.</param>
        /// <returns>The root dependency node, that links to the targeted item.</returns>
        public static DependencyNode <T> CreateDependency <T>(DependencyNodeSettings <T> settings)
        {
            DependencyNode <T> node = WalkExpressionTree <T>(settings.TargetExpression.Body, settings.ObserveSubValueChanges, null);

            if (settings.ChangeHandler != null)
            {
                node.DependencyChanged += settings.ChangeHandler;
            }
            return(node);
        }
예제 #2
0
        /// <summary>
        /// Creates dependency chain of <see cref="DependencyNode{T}"/> instances for a given
        /// expression.
        /// </summary>
        /// <typeparam name="T">The type of the expression's compiled return value.</typeparam>
        /// <param name="target">The expression that declares the dependency chain from root
        /// to the target item or value.</param>
        /// <param name="changeHandler">An optional event listener that is being invoked if the
        /// target value changes either through direct change, or because the dependency graph
        /// was changed because of a changed intermediary node.</param>
        /// <returns>The root dependency node, that links to the targeted item.</returns>
        /// <exception cref="ArgumentNullException">If <paramref name="target"/>
        /// is a null reference.</exception>
        public static DependencyNode <T> CreateDependency <T>(Expression <Func <T> > target,
                                                              EventHandler <DependencyChangeEventArgs <T> > changeHandler)
        {
            if (target == null)
            {
                throw new ArgumentNullException("target");
            }

            //create settings component
            var settings = new DependencyNodeSettings <T>(target);

            if (changeHandler != null)
            {
                settings.ChangeHandler = changeHandler;
            }

            //delegate to overload
            return(CreateDependency(settings));
        }
예제 #3
0
 /// <summary>
 /// Creates dependency chain of <see cref="DependencyNode{T}"/> instances for a given
 /// expression.
 /// </summary>
 /// <typeparam name="T">The type of the expression's compiled return value.</typeparam>
 /// <param name="settings">Settings that define the dependency graph, change listeners
 /// and monitoring behaviour.</param>
 /// <returns>The root dependency node, that links to the targeted item.</returns>
 public static DependencyNode <T> Create <T>(DependencyNodeSettings <T> settings)
 {
     return(DependencyBuilder.CreateDependency(settings));
 }