使用带有类型参数的函数的设计问题

时间:2015-12-17 19:01:51

标签: c# .net vb.net generics inheritance

下面的代码是用Vb.Net编写的,但我也接受了C#的答案。

我的类型如下:

Public Class MruItem(Of T)
     Property1
End Class

另外,我有这个:

Public Class MruFileItem : Inherits MruItem(Of FileInfo)
    BaseProperty1
    Additional Properties
End Class

现在,我需要设计一个函数,可以将MruItem作为参数,我可以作为参数传递,例如MruFileItemMruItem(of Whatever),然后返回相同的类型

但是,我尝试了但是我发现需要指定两个类型参数而不是一个

Function Test(Of A, B As MruItem(Of A))() As MruItem(Of A)()
End Function

所以,我需要以这种方式调用函数:

Dim Value As MruFileItem() = Test(Of FileInfo, MruFileItem())

...但我想以其他方式打电话:

Dim Value As MruFileItem() = Test(Of MruFileItem())

还有:

Dim Value As MruItem(Of Whatever) = Test(Of MruItem(Of Whatever))

我如何调整函数参数或类设计以避免传递两个类型参数而不是一个?。

我还尝试在Ctype<>中添加缩小的MruItem(Of Object)运算符MruItem(Of T)然后调整类型参数,但没有成功。

0 个答案:

没有答案