从Bindlist(of t)类中创建并返回一个新的列表项?

时间:2014-08-16 21:47:56

标签: vb.net bindinglist

我有一种情况,我利用继承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

1 个答案:

答案 0 :(得分:0)

您需要对泛型类型参数使用约束,以要求它具有无参数构造函数。

Public Class MyList(Of T As New)

然后,您可以像调用任何其他类型一样,通过调用该构造函数来创建该类型的实例,例如

Return New T

请注意,您的类只能存储具有无参数构造函数的类型的项目。如果这是您无法接受的限制,那么您将无法创建T的实例,因为没有单一方法可以创建任意类型的实例。