4 .net c# generics extension-methods
我试图为泛型委托创建一个扩展方法,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);
}
}
Run Code Online (Sandbox Code Playgroud)
问题是它不会编译,因为额外<T>的AsyncActionCallback通用和具有不同于预期的签名.签名void AsyncActionCallback(IAsyncResult)是预期的.
有谁知道如何解决这个问题或者想要实现我想做的事情?
public static void AsyncInvoke<T>(this Action<T> action, T param)
{
action.BeginInvoke(param, asyncResult =>
{
Action<T> a = (Action<T>)asyncResult.AsyncState;
a.EndInvoke(asyncResult);
}, action);
}
Run Code Online (Sandbox Code Playgroud)