C#三元运算符无法正常工作

Ash*_*Ash 2 c# moq ternary-operator

我有一个类的Moq模拟,我需要验证是否调用了某个方法.根据变量的类型,我需要检查方法是一次调用还是从不调用.

所以,这有效:

if (exception is ValidationException)
    mockRequestHandler.Verify(x => x.HandleException(exception), 
    Times.Once);
else
    mockRequestHandler.Verify(x => x.HandleException(exception), 
    Times.Never);
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用三元运算符,如下所示,但它似乎不起作用:

mockRequestHandler.Verify(x => x.HandleException(exception),
    (exception is ValidationException) ? Times.Once: Times.Never);
Run Code Online (Sandbox Code Playgroud)

我得到以下编译时错误:

无法确定条件表达式的类型,因为"方法组"和"方法组"之间没有隐式转换.

有什么简单的我可以忽略或三元运算符不能以这种方式使用吗?

Yel*_*yev 7

正如我在看到这个源文件,Times.OnceTimes.Never实际上是静态方法,而不是性能.

为了验证该方法被调用一次或从未被调用过,您需要以这种方式使用它:

mockRequestHandler.Verify(x => x.HandleException(exception), Times.Once());
mockRequestHandler.Verify(x => x.HandleException(exception), Times.Never());
Run Code Online (Sandbox Code Playgroud)

因此,使用三元运算符将是:

mockRequestHandler.Verify(x => x.HandleException(exception), 
    (exception is ValidationException) ? Times.Once() : Times.Never());
Run Code Online (Sandbox Code Playgroud)