【发布时间】:2016-12-01 17:31:14
【问题描述】:
在 VB.NET(不引用 3rd-party 库)中,我发现我正在编写大量以下代码:
Private _prop as String = "test"
Public Property Prop As String
Get
Return _prop
End Get
Set(value As String)
_prop = value
NotifyPropertyChanged()
End Set
'(add more properties here...)
Public Event PropertyChanged(sender As Object, e As PropertyChangedEventArgs) Implements INotifyPropertyChanged.PropertyChanged
Protected Overridable Sub NotifyPropertyChanged(<CallerMemberName> Optional propertyName As String = "")
If PropertyChangedEvent IsNot Nothing Then
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propertyName))
End If
End Sub
我想做的是这样的:
Public ObservableProperty Prop As String = "test"
并让 ObservableProperty 成为我定义的结构,它可以完成所有样板文件。
我知道如果我不希望它成为 Observable,我可以使用相同的模式 (Public Property NonObsProp As String = "test"),那么是否也可以让它们自动成为 observable?
【问题讨论】:
-
该问题的答案使用了我想避免的第 3 方库
-
很遗憾,您的问题的答案是否定的。不过你们相处得很好。我们中的许多人都希望有一个更简单的内置解决方案。 (也请看这里:stackoverflow.com/questions/3347309/…)
-
曾经有人提议允许属性有
{Get, Set, Notify}来处理这些事情,但MS拒绝了。 -
@sstan,您在链接中引用的
SetProperty想法(@crea7or)很棒!它删除了真正有用的样板文件,我认为我将得到最接近的答案。如果你想写出来,我会给你答案 - 否则我会自己写。
标签: .net vb.net properties observable