确定属性已更改

本文关键字:属性 | 更新日期: 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属性发生更改,就会通知类的用户。