表达式不在接口 ICollection 中产生值

Expression Does Not Produce a Value in Interface ICollection

我正在使用 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

编译器在第六行给出了一个错误 - Argument not specified for parameter 'item' of 'Public Sub Add(item As T)'

如果我添加参数,像这样:

Dim addMethod As Action(Of T) = collection.Add(item)

我收到一个不同的错误 - 表达式不产生值

我不熟悉扩展方法。任何帮助将不胜感激。

Action(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