public async Task <T> AsyncInvokeT <T>(AsyncInvocationT <T> invocation) { var task = GetTask(invocation); var result = await task; return((T)result); }
public async Task <T> AsyncInvokeT <T>(AsyncInvocationT <T> invocation) { var task = GetTask(invocation); if (task.Status == TaskStatus.RanToCompletion && !(task.Result is T)) { if (task.Result != null || typeof(T).IsValueType) { throw new InvalidAsyncException($"The invocation returned {task.Result ?? "null"}, but {invocation.Method.DeclaringType.FullName}.{invocation.Method.Name} expected an instance of {typeof(T)}"); } } var result = await task; return((T)result); }