我有一种情况,我利用继承Bindinglist(Of t)的类引发的事件。我试图弄清楚当列表为空时是否有创建和返回新项目(Of t)的方法,或者在使用" FIND"时找不到特定的Key字符串。功能如下所示?我的代码如下:
BINDINGLIST(OF T)CLASS:
Imports System.ComponentModel
Public Class mylist(Of t)
Inherits BindingList(Of t)
'find an item by keystring
Public Function Find(ByVal KeyString) As t
Dim myItem As t
'Check if any objects of t exist in the list
If Me.Items.Count > 0 Then
Dim properties As PropertyDescriptorCollection = _
TypeDescriptor.GetProperties(Me.Items(0).GetType)
'find the key property
Dim myProperty As PropertyDescriptor = properties.Find("Key", False)
'search for string match
For Each myItem In Me.Items
If myProperty.GetValue(myItem) = KeyString Then
Return myItem
Exit Function
End If
Next
'THIS IS WHERE I NEED HELP:
'need to assign default property values to myitem of t and return
End If
'THIS IS WHERE I NEED HELP:
'need to assign default property values to myitem of t and return
End Function
End Class
答案 0 :(得分:0)
您需要对泛型类型参数使用约束,以要求它具有无参数构造函数。
Public Class MyList(Of T As New)
然后,您可以像调用任何其他类型一样,通过调用该构造函数来创建该类型的实例,例如
Return New T
请注意,您的类只能存储具有无参数构造函数的类型的项目。如果这是您无法接受的限制,那么您将无法创建T
的实例,因为没有单一方法可以创建任意类型的实例。