Ejemplo n.º 1
0
        internal static bool TryGetBackingField(IPropertySymbol property, SemanticModel semanticModel, CancellationToken cancellationToken, out IFieldSymbol field)
        {
            field = null;
            if (property == null)
            {
                return(false);
            }

            foreach (var declaration in property.Declarations(cancellationToken))
            {
                var propertyDeclaration = declaration as PropertyDeclarationSyntax;
                if (propertyDeclaration == null)
                {
                    continue;
                }

                IdentifierNameSyntax   fieldIdentifier;
                FieldDeclarationSyntax fieldDeclaration;
                if (TryGetBackingField(propertyDeclaration, out fieldIdentifier, out fieldDeclaration))
                {
                    field = semanticModel.GetSymbolSafe(fieldIdentifier, cancellationToken) as IFieldSymbol;
                    return(field != null);
                }
            }

            return(false);
        }