コード例 #1
0
        private static bool Notifies(AccessorDeclarationSyntax setter, SemanticModel semanticModel, CancellationToken cancellationToken)
        {
            using (var pooled = InvocationWalker.Create(setter))
            {
                foreach (var invocation in pooled.Item.Invocations)
                {
                    if (PropertyChanged.IsNotifyPropertyChanged(invocation, semanticModel, cancellationToken))
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }
コード例 #2
0
        private static bool IsFirstNotifyPropertyChange(InvocationExpressionSyntax invocation, SemanticModel semanticModel, CancellationToken cancellationToken)
        {
            if (!PropertyChanged.IsNotifyPropertyChanged(invocation, semanticModel, cancellationToken))
            {
                return(false);
            }

            var statement = invocation.FirstAncestorOrSelf <ExpressionStatementSyntax>();
            var block     = statement?.FirstAncestorOrSelf <BlockSyntax>();

            if (block == null)
            {
                return(false);
            }

            var index = block.Statements.IndexOf(statement);

            if (index <= 0)
            {
                return(false);
            }

            return(!PropertyChanged.IsNotifyPropertyChanged(block.Statements[index - 1], semanticModel, cancellationToken));
        }