我有一个Moq模拟的类,我需要验证某个方法是否被调用。根据变量的类型,我需要检查该方法是被调用过的还是从不被调用。C#三元运算符不工作
所以,这个工程:
if (exception is ValidationException)
mockRequestHandler.Verify(x => x.HandleException(exception),
Times.Once);
else
mockRequestHandler.Verify(x => x.HandleException(exception),
Times.Never);
我想如下使用三元运算符,但它似乎并没有工作:
mockRequestHandler.Verify(x => x.HandleException(exception),
(exception is ValidationException) ? Times.Once: Times.Never);
我得到编译期以下时间错误:
Type of conditional expression cannot be determined because there is no implicit conversion between 'method group' and 'method group'.
有没有简单的东西我忽略或可以三元操作符不能用于这种方式?
为什么首先不要进行异常检查?例如。 '(异常是ValidationException)? mockRequestHandler.Verify(x => x.HandleException(exception),Times.Once):mockRequestHandler.Verify(x => x.HandleException(exception),Times.Never);'。它似乎几乎只要你的原始,但参考这个链接:[使用条件(?:)运算符在C#(3.0)中的方法选择?](http://stackoverflow.com/questions/5186394/using-条件操作符为方法选择在C - 尖-3-0) –
您能请指定'验证','Times.Once'和'Times.Never'类型签名? –
您应该能够将其中一个操作数转换为Func来解决它 –