我有一个属性的公共类。它们可以由用户和一些内部代码更改。我如何确定用户是否更改了该属性?也许这个任务有一些模式?
看起来我解释了我的问题不够清楚。 我有一个包含许多属性的公共类的DLL。 用户可以设置它们。 它们也设置在我的dll的内部代码中。 我需要创建一个机制来知道,如果该属性是由用户设置的。
答案 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获取调用函数的信息。