.net框架中基类的事件处理机制是怎样的?

2026-05-08 13:013阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计481个文字,预计阅读时间需要2分钟。

.net框架中基类的事件处理机制是怎样的?

好的,以下是对原文的简化修改:

plaintext好的,我有一个基类来声明事件StatusTextChanged。我的孩子学校,不能直接触发这个事件。所以我结束了这种做法:Public MustInherit Class FooBase Public Event StatusTextChanged(ByVal)

好的,所以我有一个基类来声明事件StatusTextChanged.我的孩子班,当然不能直接举起这个活动.

所以我结束了这样的事情(为简单起见):

Public MustInherit Class FooBase Public Event StatusTextChanged(ByVal StatusText As String) Protected Sub RaiseStatusTextChangedEvent(ByVal StatusText As String) RaiseEvent StatusTextChanged(StatusText) End Sub End Class

然后在我打电话的儿童班
MyBase.RaiseStatusTextChangedEvent( “东西”).
是否有更好或更推荐的方法来做到这一点?

编辑:VB.NET或C#,它的工作方式基本相同.

编辑:所以在响应之后,我在基类中,然后在子类中设置StatusText属性…

Public Event StatusTextChanged(ByVal StatusText As String) Private _StatusText As String = "Idle." Public Property StatusText() As String Get Return _StatusText End Get Protected Set(ByVal value As String) RaiseEvent StatusTextChanged(value) End Set End Property 我会说你非常接近推荐的方式(或者至少是我推荐的方式).

在给出选择的情况下,我会对您的代码进行一些更改:

>使StatusTextChanged受保护可覆盖
>在自定义EventArgs类中包装StatusText
>将StatusTextChanged声明更改为公共事件StatusTextChanged作为EventHandler(Of YourCustomEventArgs)

结果代码:

自定义eventargs类:

Public Class TextEventArgs Inherits EventArgs Private _text As String Public Sub New(ByVal text As String) _text = text End Sub Public ReadOnly Property Text() As String Get Return _text End Get End Property End Class

基类中的事件实现:

Public Event StatusTextChanged As EventHandler(Of TextEventArgs) Protected Overridable Sub OnStatusTextChanged(ByVal e As TextEventArgs) RaiseEvent StatusTextChanged(Me, e) End Sub

…最后是一个提升事件的代码行;无论是在基类中还是在继承它的类中:

.net框架中基类的事件处理机制是怎样的?

OnStatusTextChanged(New TextEventArgs("some text"))

这将更符合.NET框架其余部分中事件的设计方式.

标签:所以

本文共计481个文字,预计阅读时间需要2分钟。

.net框架中基类的事件处理机制是怎样的?

好的,以下是对原文的简化修改:

plaintext好的,我有一个基类来声明事件StatusTextChanged。我的孩子学校,不能直接触发这个事件。所以我结束了这种做法:Public MustInherit Class FooBase Public Event StatusTextChanged(ByVal)

好的,所以我有一个基类来声明事件StatusTextChanged.我的孩子班,当然不能直接举起这个活动.

所以我结束了这样的事情(为简单起见):

Public MustInherit Class FooBase Public Event StatusTextChanged(ByVal StatusText As String) Protected Sub RaiseStatusTextChangedEvent(ByVal StatusText As String) RaiseEvent StatusTextChanged(StatusText) End Sub End Class

然后在我打电话的儿童班
MyBase.RaiseStatusTextChangedEvent( “东西”).
是否有更好或更推荐的方法来做到这一点?

编辑:VB.NET或C#,它的工作方式基本相同.

编辑:所以在响应之后,我在基类中,然后在子类中设置StatusText属性…

Public Event StatusTextChanged(ByVal StatusText As String) Private _StatusText As String = "Idle." Public Property StatusText() As String Get Return _StatusText End Get Protected Set(ByVal value As String) RaiseEvent StatusTextChanged(value) End Set End Property 我会说你非常接近推荐的方式(或者至少是我推荐的方式).

在给出选择的情况下,我会对您的代码进行一些更改:

>使StatusTextChanged受保护可覆盖
>在自定义EventArgs类中包装StatusText
>将StatusTextChanged声明更改为公共事件StatusTextChanged作为EventHandler(Of YourCustomEventArgs)

结果代码:

自定义eventargs类:

Public Class TextEventArgs Inherits EventArgs Private _text As String Public Sub New(ByVal text As String) _text = text End Sub Public ReadOnly Property Text() As String Get Return _text End Get End Property End Class

基类中的事件实现:

Public Event StatusTextChanged As EventHandler(Of TextEventArgs) Protected Overridable Sub OnStatusTextChanged(ByVal e As TextEventArgs) RaiseEvent StatusTextChanged(Me, e) End Sub

…最后是一个提升事件的代码行;无论是在基类中还是在继承它的类中:

.net框架中基类的事件处理机制是怎样的?

OnStatusTextChanged(New TextEventArgs("some text"))

这将更符合.NET框架其余部分中事件的设计方式.

标签:所以