确定属性已更改

时间:2012-03-14 14:55:23

标签: c# design-patterns

我有一个属性的公共类。它们可以由用户和一些内部代码更改。我如何确定用户是否更改了该属性?也许这个任务有一些模式?

看起来我解释了我的问题不够清楚。 我有一个包含许多属性的公共类的DLL。 用户可以设置它们。 它们也设置在我的dll的内部代码中。 我需要创建一个机制来知道,如果该属性是由用户设置的。

3 个答案:

答案 0 :(得分:0)

看看这个:How to: Implement Property Change。它基本上是一个实现 INotifyPropertyChanged 的例子。

正如其他人所指出的,当事情发生时通知他人的模式被称为观察者模式。你应该在处理代码的事件中看到很多。您的类的用户将通过提供在事件发生时调用的回调来注册通知(在您的情况下,某些属性的值发生更改)。在示例代码中,只要PersonName属性发生更改,就会通知该类的用户。

答案 1 :(得分:0)

观察者模式:)。

你应该使用事件。看看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中,您可以使用一些代码来确定调用方法是否在实际类中。 如果来电者在班级=&gt;不要提高 否则,呼叫者不在班级=&gt;提高

答案 2 :(得分:0)

您可以获取StackTrace并分析调用该属性的内容。您可以使用Environment.StackTrace获取调用函数的信息。