加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

.net – 基类中的事件

发布时间:2020-12-17 07:29:38 所属栏目:百科 来源:网络整理
导读:好的,所以我有一个基类来声明事件StatusTextChanged.我的孩子班,当然不能直接举起这个活动. 所以我结束了这样的事情(为简单起见): Public MustInherit Class FooBase Public Event StatusTextChanged(ByVal StatusText As String) Protected Sub RaiseStatu
好的,所以我有一个基类来声明事件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

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

OnStatusTextChanged(New TextEventArgs("some text"))

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读