Example #1
0
        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);
        }