【发布时间】:2009-05-15 17:20:53
【问题描述】:
我正在尝试为通用委托 Action<T> 创建一个扩展方法,以便能够对 Action<T> 方法进行简单的异步调用。它基本上只是实现了当你想要执行方法而不关心它的进度时的模式:
public static class ActionExtensions
{
public static void AsyncInvoke<T>(this Action<T> action, T param) {
action.BeginInvoke(param, AsyncActionCallback, action);
}
private static void AsyncActionCallback<T>(IAsyncResult asyncResult) {
Action<T> action = (Action<T>)asyncResult.AsyncState;
action.EndInvoke(asyncResult);
}
}
问题在于它无法编译,因为额外的<T> 使AsyncActionCallback 通用并且具有与预期不同的签名。
签名void AsyncActionCallback(IAsyncResult) 是预期的。
有谁知道如何解决这个问题或完成我正在尝试做的事情?
【问题讨论】:
标签: c# .net generics extension-methods