我正在查看实现的代码。
Observable.FromEvent<TEventHandler, TEventHandlerArgs>(add, remove)
我很难理解它是如何工作的。假设TEventHandler是标准:
public delegate void EventHandler(object sender, EventArgs e);
我感到困惑的是下面的代码:
TEventHandler d = (TEventHandler) Delegate.CreateDelegate(
typeof (TEventHandler),
(object) new Action<EventArgs>(observer.OnNext),
typeof (Action<EventArgs>).GetMethod("Invoke"));
(注意:我已经将这个通用代码专门应用于这个具体的示例实例。)
CreateDelegate是如何创建一个绑定到动作上的签名为(obj,args)、方法签名为(args)的委托?obj在哪里?
感觉有点像在动作上有一个开放式委托,并且我们正在从CreateDelegate中强制'this'成为'firstArgument',并允许参数透传。如果是这样的话,感觉有点不好?