Set*_*man 3 .net c# 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
Run Code Online (Sandbox Code Playgroud)
但是,我不想在Method调用中显式键入Getter委托.为什么我不能将参数声明如下......
... (ByVal g As Getter(Of TResult))
Run Code Online (Sandbox Code Playgroud)
有办法吗?
我的最终目标是能够在被调用的类中为属性设置器和getter设置委托.但我的阅读表明你不能这样做.所以我在该类中放置了setter和getter方法,然后我希望调用类设置委托参数然后调用.这样做有最好的做法吗?
我在上面的例子中意识到我可以设置从调用类设置委托变量...但我试图创建一个紧密封装的单例.
为了记录,我不能使用.net35中声明的任何新委托类型.
欢迎使用C#中的答案.
有什么想法吗?
赛斯
您需要在方法中添加泛型类型参数:
Public Shared Sub MyMethod(Of TResult) (ByVal g As Getter(Of TResult))
Run Code Online (Sandbox Code Playgroud)
在C#中,那就是
public static void MyMethod<TResult>(Getter<TResult> g) {
Run Code Online (Sandbox Code Playgroud)