我想编写一个泛型函数,它将在List(Of T)中搜索TFilter类型的所有元素,并返回包含这些元素的List(Of TFilter)。我试过这个:
Public Function FilterList(Of T, TFilter)(ByVal ListToFilter As List(Of T)) As List(Of TFilter)
Return ListToFilter.FindAll(Function(z) z.GetType.Equals(GetType(TFilter))).ConvertAll(New Converter(Of T, TFilter)(Function(z) CType(z, TFilter)))
End Function
但是,它会出现以下错误:
无法转换“T”类型的值 'TFilter'。
有没有办法做到这一点,还是我是SOL?
提前致谢
答案 0 :(得分:2)
您需要约束TFilter
继承T
:
Public Function FilterList(Of T, TFilter As T)(...
答案 1 :(得分:2)
您实际上不需要为此编写任何代码。你可以打电话
listToFilter.OfType(Of TFilter).ToList()
有关详细信息,请参阅Enumerable.OfType
的文档。
(我假设您使用的是.NET 3.5或更高版本。)