在Visual Basic.net中,如果我有一个T列表,其中Type是一个始终具有.Name属性的对象,我如何编写一个返回.Name值的函数?
这是我的代码:
Public Function GetListOfListItemNames(Of T)(ListOfItems As List(Of T)) As List(Of String)
Dim ListToReturn As New List(Of String)
For x = 0 To ListOfItems.Count - 1
ListToReturn.Add(ListOfItems.Item(x).Name)
Next
Return ListToReturn
End Function
我收到以下错误:
名称'不是'T'的成员
答案 0 :(得分:0)
您需要在泛型方法上指定约束。具体而言,您的GetListOfListItemNames(Of T)
应定义为GetListOfListItemNames(Of T As BaseType)
,其中BaseType
是您希望包含在列表中的类型。
我在很大程度上不熟悉VB.Net,所以我的语法可能不正确。但是对通用约束的需求不是:
有关具体信息,请参阅:http://msdn.microsoft.com/en-us/library/w256ka79.aspx。