protected override Expression VisitMember(MemberExpression node) { if (IsPropertyChain(node.Expression)) { if (node.NodeType == ExpressionType.MemberAccess) { var expression = node.Expression as ConstantExpression; if (expression != null) { AddNotifier(expression.Value); } else if (node.Expression is MemberExpression) { AddNotifier(GetValue((MemberExpression)node.Expression)); } PropNames.Add(node.Member.Name); } } else if (node.NodeType == ExpressionType.Constant) { AddNotifier(((ConstantExpression)node.Expression).Value); } return(base.VisitMember(node)); }
private void RegisterNotifyingCollection(Expression node) { if (IsPropertyChain(node)) { var expression = node as ConstantExpression; if (expression != null) { AddNotifier(expression.Value); } else if (node is MemberExpression) { MemberInfo member = ((MemberExpression)node).Member; var info = member as PropertyInfo; if (info != null && !PropNames.Contains(info.Name)) { var prop = info; PropNames.Add(prop.Name); } } } }