【问题标题】:Extension class for List(of AnyType) not workingList(AnyType)的扩展类不起作用
【发布时间】:2011-08-26 19:58:33
【问题描述】:

我想为 List 类型创建一个扩展类,以便用户可以这样做

ListObject.AddDistinct("value")

我希望该方法适用于所有类型的列表,所以:

List(Of Integer)
List(Of String) 

等等等等。我的扩展是

Module ListsExtensions
<Extension()>
Public Sub AddDistinct(ByRef ls As List(Of Type), ByVal obj As Type)
    If Not ls.Contains(obj) Then ls.Add(obj)
End Sub
End Module

我已将它定义为 Type 并尝试过对象,但当我有字符串列表时,它们都无法访问。

如果我将它设置为字符串,它就会出现..但我想要更通用的东西,并且适用于所有列表。我需要如何定义它?

【问题讨论】:

标签: .net vb.net list


【解决方案1】:

List(Of AnyType) 被称为泛型类。这就是该类如何与任何类型一起工作,但仍保持强类型,而不是使用 Object

为了使您的扩展方法是通用的,您需要像这样声明通用类型(我在这里使用T 而不是Type 以遵循.NET 命名约定):

<Extension()>
Public Sub AddDistinct(Of T)(ByRef ls As List(Of T), ByVal obj As T)
    If Not ls.Contains(obj) Then ls.Add(obj)
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-17
    相关资源
    最近更新 更多