将OnProperty从C#迁移到VB.Net
我发现了一些用于连接IPropertyChanged的非常有趣的代码,请点击查看文章 我的问题是,在将其转换为VB.Net后,我在最后一行OnPropertyChanged(body.Member.Name)的OnPropertyChanged方法中收到一个编译器错误 无法从这些参数推断方法“Protected Overridable Sub OnPropertyChanged(of T)(selectorExpression As System.Linq.Expressions.Expression(of System.Func(of T))”中类型参数的数据类型。显式指定数据类型可能会更正此错误 有人能帮我更正代码以删除错误吗 原始C#版本:将OnProperty从C#迁移到VB.Net,c#,vb.net,linq,converter,C#,Vb.net,Linq,Converter,我发现了一些用于连接IPropertyChanged的非常有趣的代码,请点击查看文章 我的问题是,在将其转换为VB.Net后,我在最后一行OnPropertyChanged(body.Member.Name)的OnPropertyChanged方法中收到一个编译器错误 无法从这些参数推断方法“Protected Overridable Sub OnPropertyChanged(of T)(selectorExpression As System.Linq.Expressions.Express
在VB中,它比那个简单得多。。。只需在类的顶部粘贴一个
Implements INotifyPropertyChanged
OnPropertyChanged子项只是引发事件的快捷方式
Imports System.ComponentModel
Public Class SomeClass
Implements INotifyPropertyChanged
Public Event PropertyChanged(sender As Object, e As PropertyChangedEventArgs) _
Implements INotifyPropertyChanged.PropertyChanged
Protected Sub OnPropertyChanged(ByVal propName As String)
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propName))
End Sub
Private _someProperty As String = ""
Public Property SomeProperty As String
Get
Return _someProperty
End Get
Set(value As String)
_someProperty = value
OnPropertyChanged("SomeProperty")
End Set
End Property
End Class
或者,如果您想要一些没有魔法字符串的东西,只要您不介意使用反射,就可以复制并粘贴到任何地方:
OnPropertyChanged(System.Reflection.MethodInfo.GetCurrentMethod.Name.Replace("set_", ""))
或者,如果您使用的是.NET 4.5+,请将OnPropertyChanged声明更改为:
Private Sub OnPropertyChanged(<CallerMemberName> Optional ByVal propName As String = Nothing)
私有子OnPropertyChanged(可选ByVal propName作为String=Nothing)
在VB中,它比这个简单得多。。。只需在类的顶部粘贴一个
Implements INotifyPropertyChanged
OnPropertyChanged子项只是引发事件的快捷方式
Imports System.ComponentModel
Public Class SomeClass
Implements INotifyPropertyChanged
Public Event PropertyChanged(sender As Object, e As PropertyChangedEventArgs) _
Implements INotifyPropertyChanged.PropertyChanged
Protected Sub OnPropertyChanged(ByVal propName As String)
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propName))
End Sub
Private _someProperty As String = ""
Public Property SomeProperty As String
Get
Return _someProperty
End Get
Set(value As String)
_someProperty = value
OnPropertyChanged("SomeProperty")
End Set
End Property
End Class
或者,如果您想要一些没有魔法字符串的东西,只要您不介意使用反射,就可以复制并粘贴到任何地方:
OnPropertyChanged(System.Reflection.MethodInfo.GetCurrentMethod.Name.Replace("set_", ""))
或者,如果您使用的是.NET 4.5+,请将OnPropertyChanged声明更改为:
Private Sub OnPropertyChanged(<CallerMemberName> Optional ByVal propName As String = Nothing)
私有子OnPropertyChanged(可选ByVal propName作为String=Nothing)
在VB中,它比这个简单得多。。。只需在类的顶部粘贴一个
Implements INotifyPropertyChanged
OnPropertyChanged子项只是引发事件的快捷方式
Imports System.ComponentModel
Public Class SomeClass
Implements INotifyPropertyChanged
Public Event PropertyChanged(sender As Object, e As PropertyChangedEventArgs) _
Implements INotifyPropertyChanged.PropertyChanged
Protected Sub OnPropertyChanged(ByVal propName As String)
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propName))
End Sub
Private _someProperty As String = ""
Public Property SomeProperty As String
Get
Return _someProperty
End Get
Set(value As String)
_someProperty = value
OnPropertyChanged("SomeProperty")
End Set
End Property
End Class
或者,如果您想要一些没有魔法字符串的东西,只要您不介意使用反射,就可以复制并粘贴到任何地方:
OnPropertyChanged(System.Reflection.MethodInfo.GetCurrentMethod.Name.Replace("set_", ""))
或者,如果您使用的是.NET 4.5+,请将OnPropertyChanged声明更改为:
Private Sub OnPropertyChanged(<CallerMemberName> Optional ByVal propName As String = Nothing)
私有子OnPropertyChanged(可选ByVal propName作为String=Nothing)
在VB中,它比这个简单得多。。。只需在类的顶部粘贴一个
Implements INotifyPropertyChanged
OnPropertyChanged子项只是引发事件的快捷方式
Imports System.ComponentModel
Public Class SomeClass
Implements INotifyPropertyChanged
Public Event PropertyChanged(sender As Object, e As PropertyChangedEventArgs) _
Implements INotifyPropertyChanged.PropertyChanged
Protected Sub OnPropertyChanged(ByVal propName As String)
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propName))
End Sub
Private _someProperty As String = ""
Public Property SomeProperty As String
Get
Return _someProperty
End Get
Set(value As String)
_someProperty = value
OnPropertyChanged("SomeProperty")
End Set
End Property
End Class
或者,如果您想要一些没有魔法字符串的东西,只要您不介意使用反射,就可以复制并粘贴到任何地方:
OnPropertyChanged(System.Reflection.MethodInfo.GetCurrentMethod.Name.Replace("set_", ""))
或者,如果您使用的是.NET 4.5+,请将OnPropertyChanged声明更改为:
Private Sub OnPropertyChanged(<CallerMemberName> Optional ByVal propName As String = Nothing)
私有子OnPropertyChanged(可选ByVal propName作为String=Nothing)
并且不带参数地调用它。我发现我需要从文章中添加以下代码:
Public Event PropertyChangedHandler As PropertyChangedEventHandler
Protected Sub OnPropertyChanged(propertyName As String)
RaiseEvent PropertyChangedHandler(Me, New PropertyChangedEventArgs(propertyName))
End Sub
我发现我需要从文章中添加以下代码:
Public Event PropertyChangedHandler As PropertyChangedEventHandler
Protected Sub OnPropertyChanged(propertyName As String)
RaiseEvent PropertyChangedHandler(Me, New PropertyChangedEventArgs(propertyName))
End Sub
我发现我需要从文章中添加以下代码:
Public Event PropertyChangedHandler As PropertyChangedEventHandler
Protected Sub OnPropertyChanged(propertyName As String)
RaiseEvent PropertyChangedHandler(Me, New PropertyChangedEventArgs(propertyName))
End Sub
我发现我需要从文章中添加以下代码:
Public Event PropertyChangedHandler As PropertyChangedEventHandler
Protected Sub OnPropertyChanged(propertyName As String)
RaiseEvent PropertyChangedHandler(Me, New PropertyChangedEventArgs(propertyName))
End Sub
或者,如果您想要一些没有魔法字符串的东西,只要您不介意使用反射,就可以复制并粘贴到任何地方:
CallerMemberNameAttribute
不适用于VB.NET吗?仅适用于.NET 4.5。。。不幸的是,它花了这么长时间才进入…@monkey:如果复制/粘贴属性,它本身也可以在.NET 2.0中工作:重要的是,尽管您需要来自VS2012的C#5编译器。如果您使用2013,但目标是较旧的项目,则非常有用;)@克里斯·伊尔玛非常有用。我打算忽略该属性,因为我必须针对较旧的框架,很高兴知道!或者,如果您想要一些没有魔法字符串的东西,只要您不介意使用反射,就可以复制并粘贴到任何地方:CallerMemberNameAttribute
不适用于VB.NET吗?仅适用于.NET 4.5。。。不幸的是,它花了这么长时间才进入…@monkey:如果复制/粘贴属性,它本身也可以在.NET 2.0中工作:重要的是,尽管您需要来自VS2012的C#5编译器。如果您使用2013,但目标是较旧的项目,则非常有用;)@克里斯·伊尔玛非常有用。我打算忽略该属性,因为我必须针对较旧的框架,很高兴知道!或者,如果您想要一些没有魔法字符串的东西,只要您不介意使用反射,就可以复制并粘贴到任何地方:CallerMemberNameAttribute
不适用于VB.NET吗?仅适用于.NET 4.5。。。不幸的是,它花了这么长时间才进入…@monkey:如果复制/粘贴属性,它本身也可以在.NET 2.0中工作:重要的是,尽管您需要来自VS2012的C#5编译器。如果您使用2013,但目标是较旧的项目,则非常有用;)@克里斯·伊尔玛非常有用。我打算忽略该属性,因为我必须针对较旧的框架,很高兴知道!或者,如果您想要一些没有魔法字符串的东西,只要您不介意使用反射,就可以复制并粘贴到任何地方:CallerMemberNameAttribute
不适用于VB.NET吗?仅适用于.NET 4.5。。。不幸的是,它花了这么长时间才进入…@monkey:如果复制/粘贴属性,它本身也可以在.NET 2.0中工作:重要的是,尽管您需要来自VS2012的C#5编译器。如果您使用2013,但目标是较旧的项目,则非常有用;)@克里斯·伊尔玛非常有用。我打算忽略该属性,因为我必须针对较旧的框架,很高兴知道!事实上,如果有人先发布我的问题,这个答案本可以解决我的问题,这就是为什么我在回答我自己的问题时会将其作为答案。@scott\u f:请忽略它们,如果你解决了自己的问题,可以将其作为答案发布:事实上,如果其他人发布,这就是解决我问题的答案