我有一个带有委托声明的类,如下所示......
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#中的答案。
有什么想法?
赛斯
答案 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