如何将泛型委托参数传递给.NET 2.0中的方法

时间:2010-05-07 18:54:58

标签: c# .net vb.net delegates

我有一个带有委托声明的类,如下所示......

Public Class MyClass  
    Public Delegate Function Getter(Of TResult)() As TResult    

    ''#the following code works.
    Public Shared Sub MyMethod(ByVal g As Getter(Of Boolean))
        ''#do stuff
    End Sub
End Class

但是,我不想在Method调用中显式键入Getter委托。为什么我不能按如下方式声明参数......

... (ByVal g As Getter(Of TResult))

有办法吗?

我的最终目标是能够在被调用的类中为属性设置器和getter设置委托。但我的阅读表明你不能这样做。所以我在该类中放置了setter和getter方法,然后我希望调用类设置委托参数然后调用。这样做有最好的做法吗?

我在上面的例子中意识到我可以设置从调用类设置委托变量...但我正在尝试创建一个紧密封装的单例。

对于记录,我不能使用.net35中声明的任何新委托类型。

欢迎使用C#中的答案。

有什么想法?

赛斯

2 个答案:

答案 0 :(得分:7)

您需要在方法中添加泛型类型参数:

Public Shared Sub MyMethod(Of TResult) (ByVal g As Getter(Of TResult))

在C#中,那将是

public static void MyMethod<TResult>(Getter<TResult> g) {

答案 1 :(得分:3)

您可以使接受泛型委托的方法本身通用:

Public Shared Sub MyMethod(Of TResult)(ByVal g As Getter(Of TResult))
    'do stuff
End Sub