|
|
1
6
我想说你很接近推荐的方式(或者至少是我推荐的方式)。 我会对您的代码做一些修改,如果您有选择的话:
结果代码: 自定义EventArgs类:
基类中的事件实现:
…最后是引发事件的代码行;在基类或继承它的类中:
这将更符合.NET框架其余部分中事件的设计方式。 |
|
|
2
1
除非您的子类需要重写基类方法,否则我认为调用基类实现绝对是最佳解决方案。 |
|
|
3
0
对于这种类型的场景,这几乎是通过派生方法在基类上引发事件的标准方法。 但是,这可能会根据谁控制层次结构的状态文本而有所改变。如果foobase中有一个具体的statistext backing字段只能通过访问器更改,那么我不会让子级控制statistextchanged事件的提升。相反,我将强制在statusText属性的setter中引发事件。这使得父类在执行任何它希望在何时以及何时不引发所述事件的契约时拥有更多的控制权。 但是,如果statusText是必须由派生类定义的属性,我将选择您显示的路由。 |
|
|
4
0
您可以拥有的一个选项是将状态属性包装在基类中,以便它在更改时引发事件本身。 (在C中,因为不知道vb,目前无法访问Visual Studio)
|
|
|
5
0
这是我的带有委托和状态文本参数的事件代码 Public Event Status As StatusEventHandler
Protected Overridable Sub OnStatus(ByVal e As StatusEventArgs)
RaiseEvent Status(Me, e)
End Sub
Public Delegate Sub StatusEventHandler(ByVal sender As Object, _
ByVal e As StatusEventArgs)
<System.Serializable()> _
Public Class StatusEventArgs
Inherits System.EventArgs
Public Sub New()
End Sub
Public Sub New(ByVal statusText As String)
_StatusText = statusText
End Sub
' Enter code here for event properties, etc.
Private _StatusText As String = ""
Public Property StatusText() As String
Get
Return _StatusText
End Get
Set(ByVal value As String)
_StatusText = value
End Set
End Property
End Class
|
|
|
Drake Marquis · 如何在c++中定义派生类? 8 年前 |
|
|
Haraldur · 派生类中枚举的C#极限选项 8 年前 |
|
|
A.Saeed · 从基类型的函数返回派生类对象 10 年前 |
|
|
randomehh · C++:在基类中使用函数调用派生类 10 年前 |
|
|
Furqan Safdar · 如何将列表集合强制转换为派生集合对象? 11 年前 |
|
|
Wannabe · 写出特定于派生类的财产 11 年前 |
|
|
Nat · C++类和继承错误:未定义对派生类的引用 11 年前 |
|
|
Ole Albers · 派生树节点的文本属性? 12 年前 |