C# 在.NET 2.0中,如何将委托分配给委托

C# 在.NET 2.0中,如何将委托分配给委托,c#,vb.net,.net-2.0,delegates,C#,Vb.net,.net 2.0,Delegates,我只是继续回答。谢谢你的帮助。现在我需要知道如何将委托分配给另一个委托声明。这能做到吗 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)) ''

我只是继续回答。谢谢你的帮助。现在我需要知道如何将委托分配给另一个委托声明。这能做到吗

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

你是怎么做到的


Seth

我不太确定您想做什么-在您的代码中,
Getter
是一个类型(委托类型)的名称,而不是您可以分配某些内容的类的实例字段


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

您还不能。您的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(属于TResult)声明的泛型类型未连接到我刚才添加到此处的委托变量的类型。您必须使整个类成为泛型的,而不仅仅是使其工作的方法


我还想知道为什么不使用现有的
Func(Of t)
delegate?

我已经简化了一点。对MyClass.MyMethod的调用如下所示。MyClass.MyMethod(SomeOtherProc的地址)我有一个类级委托(Getter),其sig与方法参数委托(g)完全相同。我想要的最终结果是将Getter设置为AddressOf g,这是在调用MyMethod时设置的。我不是在处理这里发生的事情。Seth@Seth:如果不需要完整事件,则需要一个委托类型的字段(如Joel所示)。Func(of t)在NET 2中不可用。@Seth OK。更新了您的问题标签,以便我们了解该部分。