我想为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并尝试了对象,但是当我有一个字符串列表时,它们都不可访问。
如果我将它设置为字符串然后出现..但我想要更通用的东西,并将适用于所有列表。我如何定义它?
答案 0 :(得分:5)
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