Кажется, что overkill задает значение типа NULL и реализует iNotifyPropertyChanged. Есть ли лучший способ сделать это?Nullable Типы и свойства с INotifyPropertyChanged
Private _WorkPhone As Long?
Public Property [WorkPhone]() As Long?
Get
Return _WorkPhone
End Get
Set(ByVal value As Long?)
If value.HasValue = False Then
If _WorkPhone.HasValue = True Then
MyBase.RaisePropertyChanging("WorkPhone")
_WorkPhone = Nothing
MyBase.MarkDirty()
MyBase.RaisePropertyChanged("WorkPhone")
End If
Else
If _WorkPhone.HasValue Then
If _WorkPhone.Value <> value.Value Then
MyBase.RaisePropertyChanging("WorkPhone")
_WorkPhone = value
MyBase.MarkDirty()
MyBase.RaisePropertyChanged("WorkPhone")
End If
Else
MyBase.RaisePropertyChanging("WorkPhone")
_WorkPhone = value
MyBase.MarkDirty()
End If
MyBase.RaisePropertyChanged("WorkPhone")
End If
End Set
End Property
Я попытался с помощью простого кода, но моя точка останова на MyBase.RaisePropertyChanging («WorkPhone») никогда не ударил, а значение не меняется.
If _WorkPhone <> value Then
MyBase.RaisePropertyChanging("WorkPhone")
_WorkPhone = value
MyBase.MarkDirty()
MyBase.RaisePropertyChanged("WorkPhone")
End If
Это именно тот код, который я использовал, но в postback от asp.net он не попадал в первый вызов mybase.raisepropertychanging. Он не устанавливал значение, следовательно, сложную логику. –
@Rick Ratayczak: Каковы были значения '_workPhone' и' value' в этом случае? Если мы оба не увидим что-то тонкое, то это должно быть правильно. – jason
_workphone.hasvalue = false, и value.hasvalue = true Я прохожу по номеру телефона, в собственность без. –