private bool IsAutomaticProperty(PropertyDeclarationSyntax prop) { return prop.DescendantNodes() .OfType<AccessorDeclarationSyntax>() .Where(acc => !acc.ChildNodes().Any()) .Any(); }
private static IEnumerable<ObjectCreationExpressionSyntax> GetObjectCreations(SyntaxNodeAnalysisContext context, ClassDeclarationSyntax classDeclaration, PropertyDeclarationSyntax propertyDeclarationSyntax, IPropertySymbol propertySymbol) { var objectCreations = classDeclaration.DescendantNodes() .OfType<AssignmentExpressionSyntax>() .Where(a => context.SemanticModel.GetSymbolInfo(a.Left).Symbol.Equals(propertySymbol) && a.Right is ObjectCreationExpressionSyntax) .Select(a => a.Right as ObjectCreationExpressionSyntax).ToList(); var arrowExpressionClause = propertyDeclarationSyntax.DescendantNodes() .OfType<ArrowExpressionClauseSyntax>() .SingleOrDefault(a => a.Expression is ObjectCreationExpressionSyntax) ?.Expression as ObjectCreationExpressionSyntax; if (arrowExpressionClause != null) { objectCreations.Add(arrowExpressionClause); } var getAcessorDeclararion = propertyDeclarationSyntax.DescendantNodes() .OfType<AccessorDeclarationSyntax>() .SingleOrDefault(a => a.IsKind(SyntaxKind.GetAccessorDeclaration)); if (getAcessorDeclararion != null) { objectCreations.AddRange(getAcessorDeclararion.DescendantNodes() .OfType<ObjectCreationExpressionSyntax>()); } return objectCreations; }