我正在使用Visual Studio 2013 / .NET Framework 4.5开发Windows Presentation Foundation(WPF)项目。这是在VB.NET中。
我正在尝试访问以前从未做过的TFS数据,所以我正在使用教程。但是,本教程是在C#中,所以我转换了代码。 C#代码编译并运行没有错误,但VB代码没有。
C#:
public static class ExtensionsMethods
{
public static void AddOnUi<T>(this ICollection<T> collection, T item)
{
Action<T> addMethod = collection.Add;
Application.Current.Dispatcher.BeginInvoke(addMethod, item);
}
}
VB:
Public Module ExtensionsMethods
Sub New()
End Sub
<System.Runtime.CompilerServices.Extension> _
Public Sub AddOnUi(Of T)(collection As ICollection(Of T), item As T)
Dim addMethod As Action(Of T) = collection.Add
Application.Current.Dispatcher.BeginInvoke(addMethod, Item)
End Sub
End Module
编译器在第六行给出错误 - 没有为'Public Sub Add(item as T)'的参数'item'指定参数
如果我添加参数,如下:
Dim addMethod As Action(Of T) = collection.Add(item)
我得到一个不同的错误 - Expression不会产生值
我不熟悉扩展方法。任何帮助将不胜感激。
答案 0 :(得分:1)
行动(Of T)是代表。 AddressOf 可用于创建一个。
Public Module ExtensionsMethods
Sub New()
End Sub
<System.Runtime.CompilerServices.Extension> _
Public Sub AddOnUi(Of T)(collection As ICollection(Of T), item As T)
Dim addMethod As Action(Of T) = AddressOf collection.Add
Application.Current.Dispatcher.BeginInvoke(addMethod, item)
End Sub
End Module