Я пытаюсь создать метод расширения для универсального делегата 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)
.
Кто-нибудь знает, как обойти это или выполнить то, что я пытаюсь сделать?