如何在.NET 2.0中为委托分配委托

时间:2010-05-07 20:51:40

标签: c# vb.net .net-2.0 delegates

我只是回答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是一个类型,不能用作表达式。

你是怎么做到的?

赛斯

2 个答案:

答案 0 :(得分:2)

我不太确定你要做什么 - 在你的代码中,Getter是一个类型的名称(一个委托类型),而不是你可以分配一些东西的类的实例字段到。

您是否打算声明一个事件(其他用户可以注册处理程序)?如果是这种情况,请参阅MSDN上的this article

答案 1 :(得分:1)

你还不能。你的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)代表?