Я обнаружил множество вопросов к сообщению об ошибке, но не тот, который соответствует моему конкретному случаю.
У меня есть метод с этой подписью в реализации кэша:
public bool TryGet(TKey key, out TValue returnVal, Func<TKey, TValue> externalFunc = null)
У меня есть класс, полученный из TKey: CompositeKey и TValue: string.
Я пытаюсь смоделировать его для модульного тестирования следующим образом:
_cacheMock
.Setup(x => x.TryGet(It.IsAny<CompositeKey>(), out It.Ref<string>.IsAny, It.IsAny<Func<CompositeKey, string>>()))
.Returns((CompositeKey key, out string s, Func<CompositeKey, string> fetchOne) => { s = ""; return true; });
Я получаю ошибку компиляциидля строки .Returns
:
"Невозможно преобразовать лямбда-выражение в тип 'bool', поскольку оно не является типом делегата"
Если я удалю "out"модификатор компилируется нормально - но, конечно, не совпадает с сигнатурой вызова, и я не могу получить значение out.
Есть ли способ исправить часть оператора Returns () без изменениясам метод TryGet ()?