【发布时间】:2013-09-12 13:50:21
【问题描述】:
我正在尝试在C# 中实现一个 JsonRpc 客户端类,该类在响应 JsonRpc 时执行给定的method / delegate / callback(解释为什么我需要我将要做的事情问)。
为此,我想要一种方法来注册任意类型的回调(任意参数列表)。每当响应到达时,都会调用/评估此回调。这意味着在注册时,无论回调可能是什么,它都会被接受,并且在执行时它的类型可能会导致异常,一旦它与响应的类型一起检查。
我见过实现类似概念的代码:
//Defining a delegate based on a method signature
Delegate d = Delegate.CreateDelegate(delegate_type, context, methodInfo);
//Executing the delegate when response arrives
d.DynamicInvoke(parameters);
如果我要实现相同的功能,我需要做的就是接受Delegate 类型的参数来注册回调。但这对我来说不起作用,因为我希望注册回调比创建它的 Delegate 更容易(需要十几行才能得出一个方法的 Delegate)。
我的问题终于来了:
您将如何实现在C# 中注册任意类型的回调?
[更新]
或者也许有人可以想出一个简单的方法来创建方法的Delegate!?
【问题讨论】: