【发布时间】:2014-02-06 20:35:24
【问题描述】:
在一个类中,我编写了一些方法来检索一些文件,现在为了简化代码编写,我编写了这个需要类型的私有函数:
Private Shared Function GetDeletedItems(Of T)(Optional ByVal DriveLetter As Char = Nothing) As T()
Return (From Item As ShellObject In RecycleBin
Where Item.GetType = GetType(T) _
AndAlso If(DriveLetter = Nothing,
Nothing,
Item.Name.StartsWith(DriveLetter,
StringComparison.InvariantCultureIgnoreCase))).
Cast(Of T).
ToArray()
End Function
然后只应该从类中调用这个公共函数,我尝试设置正确的类型来调用私有函数并返回数据:
Public Shared Function GetDeletedItems(ByVal ItemType As ShellItemType,
Optional ByVal DriveLetter As Char = Nothing)
Dim CurrentType As Type = Nothing
Select Case ItemType
Case ShellItemType.All
CurrentType = GetType(ShellObject)
Case ShellItemType.Files
CurrentType = GetType(ShellFile)
Case ShellItemType.Folders
CurrentType = GetType(ShellFolder)
End Select
Return GetDeletedItems(Of CurrentType)(DriveLetter)
End Function
问题是我在 Return 指令中遇到错误,因为它说 CurrentType 没有定义,我做错了什么?
【问题讨论】:
-
Type是System.Type不同于Of T是“类型参数”,类型参数需要在编译时知道 -
感谢您的评论,但是我需要进行哪些修改?不能像我尝试使用类型那样在 var 中定义类型参数?
-
@ElektroStudios,您将不得不使用反射在运行时构建正确的泛型类型。我可以用 C# 编写它,但是在 VB 中我需要很长时间,所以我可能无法提供尽可能多的帮助。
标签: .net vb.net function types