我有一個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來解決它 –