none
Frage zu xxxEventArgs Eigenschaften RRS feed

  • Frage

  • Hallo,

    ich habe bisher beim Erstellen einer Klasse für EventArgs die Eigenschaften immer als z.B. "Public Property xxx AS Boolean" deklariert da ich den Eigenschaften vor dem Auslösen des jeweiligen Ereignis Werte zuweisen muss; soweit so gut.

    Jetzt ist mir im Objektbrowser aufgefallen, dass .NET xxxEventArgs-Eigenschaften (bis auf die Handled-Eigenschaft, logisch) immer als "Public Readonly Property xyz" deklariert sind; was ja eigentlich auch vernünftig ist.

    Es stellt sich mir jetzt aber die Frage wie ich in der Klasse die das Event auslöst den Readonly-Eigenschaften ihre Werte zuweisen kann? Bzw. wie wird das in .NET gemacht?

    Besten Dank für eine Erklärung,

    f_ro

    Donnerstag, 19. Juni 2014 14:17

Antworten

  • Hi,

    man kann das bspw. über den Konstruktur machen.

    Public Class DummyEventArgs
    
        Inherits EventArgs
    
        Private _Dummy As String
    
        Public ReadOnly Property Dummy As String
            Get
                Return _Dummy
            End Get
        End Property
    
        Public Sub New()
    
        End Sub
    
        Public Sub New( ByVal Dummy As String )
    
            Me._Dummy = Dummy
    
        End Sub
    
    End Class
    Dim args As New DummyEventArgs( "Hallo Welt" )



    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    • Als Antwort markiert f_ro Donnerstag, 19. Juni 2014 14:35
    Donnerstag, 19. Juni 2014 14:26
    Moderator

Alle Antworten

  • Hi,

    man kann das bspw. über den Konstruktur machen.

    Public Class DummyEventArgs
    
        Inherits EventArgs
    
        Private _Dummy As String
    
        Public ReadOnly Property Dummy As String
            Get
                Return _Dummy
            End Get
        End Property
    
        Public Sub New()
    
        End Sub
    
        Public Sub New( ByVal Dummy As String )
    
            Me._Dummy = Dummy
    
        End Sub
    
    End Class
    Dim args As New DummyEventArgs( "Hallo Welt" )



    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    • Als Antwort markiert f_ro Donnerstag, 19. Juni 2014 14:35
    Donnerstag, 19. Juni 2014 14:26
    Moderator
  • Hallo,
    setze die Eigenschaften einfach im Konstruktor:

    Class MyEventArgs
        Public Sub New(Test As String)
            Me._Test = Test
        End Sub
    
        Dim _Test As String
        Public ReadOnly Property Test As String
            Get
                Return _Test
            End Get
        End Property
    End Class

    In VB.NET können die Auto-Implementierten Eigenschaften nicht readonly sein. Damusst du den ausführlichen Weg benutzen.

    Alternativ wäre es möglich eine Hilfsmethode zu erstellen, worauf nur deine verwendende Klasse Zugriff (Freidn, Protected) hat. Das macht aber nur Sinn, wenn du alles in einer extra Assembly o.ä. hast


    Tom Lambert - C# MVP
    Bitte bewertet- und markiert Beiträge als Antwort. Danke.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    Donnerstag, 19. Juni 2014 14:28
  • Besten Dank für die Erklärung,

    noch mal einen Blick in den Objektbrowser geworfen und genau so ist es.

    Schönen Tag noch,

    f_ro

    Donnerstag, 19. Juni 2014 14:40