我只是在how to pass a generic delegate as a parameter上找到答案。谢谢你的帮助。现在我需要知道如何将委托分配给另一个委托声明。这可以做到吗?
Public Class MyClass
Public Delegate Function Getter(Of TResult)() As TResult
''#the following code works.
Public Shared Sub MyMethod(Of TResult)(ByVal g As Getter(Of TResult))
''# I want to assign Getter = g ''#how do you do it.
End Sub
End Class请注意,Getter现在是私有的。如何分配Getter =G
当我尝试Getter =g‘时,我得到的类型参数太少,编译错误。当我尝试Getter(Of TResult) =g’时,我得到的Getter是一个类型,不能用作表达式。
你是怎么做到的?
赛斯
发布于 2010-05-08 05:02:17
你现在还不能。你的Getter(Of TResult)()委托不是一个可以赋值的变量。它更像是一个类定义。因此,首先还需要声明一个可以使用的委托变量:
Public Class MyClass
Public Delegate Function Getter(Of TResult)() As TResult
Private MyGetter As Getter(Of TResult)
Public Shared Sub MyMethod(Of TResult)(ByVal g As Getter(Of TResult))
MyGetter = g
End Sub
End Class注意,泛型类型仍然有一个问题,因为您为MyMethod(Of TResult)声明的泛型类型没有连接到我刚刚在这里添加的委托变量的类型。您必须使整个类成为泛型,而不仅仅是方法才能正常工作。
我还想知道为什么不直接使用现有的Func(Of T)委托?
发布于 2010-05-08 04:58:39
我不太清楚您想要做什么--在您的代码中,Getter是一个类型(委托类型)的名称,而不是您可以为其赋值的类的实例字段。
您是否打算声明一个事件(其他用户可以向其注册处理程序)?如果是这种情况,请参见MSDN上的示例this article。
https://stackoverflow.com/questions/2791610
复制相似问题