确定属性已更改
本文关键字:属性 | 更新日期: 2023-09-27 18:27:42
我有一个带有属性的公共类。它们可以由用户和一些内部代码更改。如何确定用户是否更改了属性?也许这项任务有一些模式?
我似乎把我的问题解释得不够清楚。我有一个带有公共类的dll,它包含许多属性。用户可以设置它们。它们也设置在我的dll的内部代码中。我需要创建一个机制来了解该属性是否由用户设置。
观察者模式:)。
您应该使用事件。看看INotifyPropertyChanged
以下是您应该考虑的一个小代码片段,它使用基本事件来通知更改:
Public Property EstMenage() As Boolean
Get
Return _estMenage
End Get
Set(ByVal value As Boolean)
_estMenage = value
NotifyDataChanged()
End Set
End Property
Private Sub NotifyDataChanged(ByVal sender As Object, ByVal e As EventArgs)
RaiseEvent OnDataChanged(sender, e)
End Sub
Private Sub NotifyDataChanged()
NotifyDataChanged(me, new EventArgs())
End Sub
<NonSerialized()> _
Friend Event OnDataChanged(ByVal sender As Object, ByVal e As EventArgs)
编辑:
在setter
中,可以有一些代码来确定调用方法是否在实际类中。如果来电者在课堂上=>不要提高否则,调用者不在class=>Raise
您可以获取StackTrace并分析调用该属性的内容。您可以使用Environment.StackTrace来获取调用函数的信息。
看看这个:如何:实现属性更改。它基本上是实现INotifyPropertyChanged的一个示例。
正如其他人所指出的,当事情发生时通知他人的模式被称为观察者模式。您应该在事件处理代码中看到这一点。类的用户会通过提供事件发生时要调用的回调(在您的情况下,是某个属性值的更改)来注册通知。在示例代码中,只要PersonName属性发生更改,就会通知类的用户。