File: Microsoft.NetCore.Analyzers\Runtime\BasicPreferDictionaryContainsMethods.vb
Web Access
Project: src\src\sdk\src\Microsoft.CodeAnalysis.NetAnalyzers\src\Microsoft.CodeAnalysis.VisualBasic.NetAnalyzers\Microsoft.CodeAnalysis.VisualBasic.NetAnalyzers.vbproj (Microsoft.CodeAnalysis.VisualBasic.NetAnalyzers)
' Copyright (c) Microsoft.  All Rights Reserved.  Licensed under the MIT license.  See License.txt in the project root for license information.

Imports Microsoft.CodeAnalysis
Imports Microsoft.CodeAnalysis.Diagnostics
Imports Microsoft.CodeAnalysis.Operations
Imports Microsoft.NetCore.Analyzers.Runtime

Namespace Microsoft.NetCore.VisualBasic.Analyzers.Runtime
    <DiagnosticAnalyzer(LanguageNames.VisualBasic)>
    Public NotInheritable Class BasicPreferDictionaryContainsMethods : Inherits PreferDictionaryContainsMethods

        Private Protected Overrides Function TryGetPropertyReferenceOperation(containsInvocation As IInvocationOperation, ByRef propertySymbol As IPropertySymbol) As Boolean

            Dim method = containsInvocation.TargetMethod
            Dim receiver As IOperation = Nothing

            If method.Parameters.Length = 1 Then
                receiver = containsInvocation.Instance
            End If

            Dim receiverAsConversion = TryCast(receiver, IConversionOperation)
            If receiverAsConversion IsNot Nothing Then
                receiver = receiverAsConversion.Operand
            End If

            Dim receiverAsPropertyReference = TryCast(receiver, IPropertyReferenceOperation)
            If receiverAsPropertyReference IsNot Nothing Then
                propertySymbol = receiverAsPropertyReference.Property
            Else
                propertySymbol = Nothing
            End If

            Return propertySymbol IsNot Nothing
        End Function
    End Class
End Namespace