| File: Symbols\SynthesizedSymbols\SynthesizedOverridingWitheventsProperty.vb | Web Access |
| Project: src\roslyn\src\Compilers\VisualBasic\Portable\Microsoft.CodeAnalysis.VisualBasic.vbproj (Microsoft.CodeAnalysis.VisualBasic) |
' Licensed to the .NET Foundation under one or more agreements. ' The .NET Foundation licenses this file to you under the MIT license. ' See the LICENSE file in the project root for more information. Imports System Imports System.Collections.Generic Imports System.Collections.Immutable Imports System.Diagnostics Imports System.Globalization Imports System.Threading Imports Microsoft.CodeAnalysis.Text Imports Microsoft.CodeAnalysis.VisualBasic Imports Microsoft.CodeAnalysis.VisualBasic.Symbols Imports Microsoft.CodeAnalysis.VisualBasic.Syntax Namespace Microsoft.CodeAnalysis.VisualBasic.Symbols ''' <summary> ''' This class represents synthetic WithEvents property that overrides ''' one in one of the base classes. ''' </summary> ''' <remarks> ''' When derived class contains "Handles" methods that refer to a ''' WithEvents property in a base class, derived class needs to add a ''' synthetic override for the base WithEvent property. ''' We need the override so that we could inject code sequences that ''' remove old handlers and add new handlers when something is assigned ''' to the property. ''' <example> ''' Public Class Base ''' Protected Friend WithEvents w As Base = Me ''' Public Event e As System.Action ''' ''' Sub H1() Handles w.e ''' End Sub ''' End Class ''' ''' Public Class Derived ''' Inherits Base ''' ''' Sub H2() Handles w.e ''' End Sub ''' End Class ''' </example> ''' </remarks> Friend NotInheritable Class SynthesizedOverridingWithEventsProperty Inherits PropertySymbol Private ReadOnly _baseProperty As PropertySymbol Private ReadOnly _containingType As SourceNamedTypeSymbol Private ReadOnly _getter As SynthesizedWithEventsAccessorSymbol Private ReadOnly _setter As SynthesizedWithEventsAccessorSymbol Friend Sub New(baseProperty As PropertySymbol, container As SourceNamedTypeSymbol) Me._baseProperty = baseProperty Me._containingType = container _getter = New SynthesizedWithEventsGetAccessorSymbol( container, Me) _setter = New SynthesizedWithEventsSetAccessorSymbol( container, Me, baseProperty.SetMethod.ReturnType, valueParameterName:=StringConstants.WithEventsValueParameterName) End Sub Public Overrides ReadOnly Property IsWithEvents As Boolean Get Return True End Get End Property Friend Overrides ReadOnly Property ShadowsExplicitly As Boolean Get 'WithEvents properties shadow by name (similarly to fields). Return True End Get End Property Friend Overrides ReadOnly Property CallingConvention As Microsoft.Cci.CallingConvention Get Return _baseProperty.CallingConvention End Get End Property Public Overrides ReadOnly Property ContainingSymbol As Symbol Get Return _containingType End Get End Property Public Overrides ReadOnly Property ContainingType As NamedTypeSymbol Get Return _containingType End Get End Property Public Overrides ReadOnly Property DeclaredAccessibility As Accessibility Get Return _baseProperty.DeclaredAccessibility End Get End Property Public Overrides ReadOnly Property ExplicitInterfaceImplementations As ImmutableArray(Of PropertySymbol) Get Return ImmutableArray(Of PropertySymbol).Empty End Get End Property Public Overrides ReadOnly Property GetMethod As MethodSymbol Get Return _getter End Get End Property Public Overrides ReadOnly Property SetMethod As MethodSymbol Get Return _setter End Get End Property Friend Overrides ReadOnly Property AssociatedField As FieldSymbol Get Return Nothing End Get End Property Public Overrides ReadOnly Property IsDefault As Boolean Get Return False End Get End Property Public Overrides ReadOnly Property IsMustOverride As Boolean Get Return False End Get End Property Public Overrides ReadOnly Property IsNotOverridable As Boolean Get Return False End Get End Property Public Overrides ReadOnly Property IsOverloads As Boolean Get Return False End Get End Property Public Overrides Function GetOverloadResolutionPriority() As Integer Return 0 End Function Public Overrides ReadOnly Property IsOverridable As Boolean Get ' override is itself overridable Return True End Get End Property Public Overrides ReadOnly Property IsOverrides As Boolean Get ' that's the idea. Return True End Get End Property Public Overrides ReadOnly Property IsShared As Boolean Get ' override is never shared Return False End Get End Property Friend Overrides Function GetLexicalSortKey() As LexicalSortKey Return _containingType.GetLexicalSortKey() End Function Public Overrides ReadOnly Property Locations As ImmutableArray(Of Location) Get Return _containingType.Locations End Get End Property Public Overrides ReadOnly Property Parameters As ImmutableArray(Of ParameterSymbol) Get Debug.Assert(_baseProperty.Parameters.IsEmpty) Return ImmutableArray(Of ParameterSymbol).Empty End Get End Property Public Overrides ReadOnly Property ParameterCount As Integer Get Debug.Assert(_baseProperty.ParameterCount = 0) Return 0 End Get End Property Public Overrides ReadOnly Property ReturnsByRef As Boolean Get Return _baseProperty.ReturnsByRef End Get End Property Public Overrides ReadOnly Property Type As TypeSymbol Get Return _baseProperty.Type End Get End Property Public Overrides ReadOnly Property TypeCustomModifiers As ImmutableArray(Of CustomModifier) Get Return _baseProperty.TypeCustomModifiers End Get End Property Public Overrides ReadOnly Property RefCustomModifiers As ImmutableArray(Of CustomModifier) Get Return _baseProperty.RefCustomModifiers End Get End Property Public Overrides ReadOnly Property DeclaringSyntaxReferences As ImmutableArray(Of SyntaxReference) Get ' since it is IsImplicitlyDeclared Return ImmutableArray(Of SyntaxReference).Empty End Get End Property Public Overrides ReadOnly Property Name As String Get Return _baseProperty.Name End Get End Property Friend Overrides ReadOnly Property HasSpecialName As Boolean Get Return False End Get End Property Public Overrides ReadOnly Property IsImplicitlyDeclared As Boolean Get Return True End Get End Property Friend Overrides ReadOnly Property ObsoleteAttributeData As ObsoleteAttributeData Get Return Nothing End Get End Property Friend Overrides ReadOnly Property IsMyGroupCollectionProperty As Boolean Get Return False End Get End Property Public Overrides ReadOnly Property IsRequired As Boolean Get Return False End Get End Property End Class End Namespace