接线员&#34;!&#34;不能应用于Task <bool>类型的operando

时间:2016-11-09 21:43:27

标签: c#

我从库中有以下方法:

IRuleBuilderOptions<T1, T2> MustAsync<T1, T2>(this IRuleBuilder<T1, T2> ruleBuilder, Func<T2, CancellationToken, Task<bool>> predicate);

我用它如下:

.MustAsync((t2, token) => someAsyncMethodThatReturnsTaskBoolean());

但是我无法否定这个方法:

.MustAsync((t2, token) => !someAsyncMethodThatReturnsTaskBoolean());

因为我收到错误:

Operator "!" cannot be applied to operand of type Task<bool>

我无法更改方法,因为它来自外部库。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

async (t2, token) => !(await someAsyncMethodThatReturnsTaskBoolean())

这将完成任务并应用你的!结果(即布尔值)而不是任务本身。