Moq функция с 5 + параметры и аргументы вызова доступа

У меня есть функция, которую я хочу к Moq. Проблема состоит в том, что требуется 5 параметров. Платформа только содержит Action<T1,T2,T3,T4> и дженерик Moq CallBack() только Действие перегрузок и четыре универсальных версии. Существует ли изящное обходное решение для этого?

Это - то, что я хочу сделать:

public class Filter : IFilter  
{  
    public int Filter(int i1, int i2, int i3, int i4, int i5){return 0;}  
}

//Moq code:
var mocker = new Mock<IFilter>();  
mocker.Setup(x => x.Filter(  
    It.IsAny<int>(),  
    It.IsAny<int>(),  
    It.IsAny<int>(),  
    It.IsAny<int>(),  
    It.IsAny<int>(),  
    It.IsAny<int>())  
.Callback
(  
    (int i1, int i2, int i3, int i4, int i5) => i1 * 2  
);  

Moq не позволяет это, потому что нет никакого универсального Действия, которое берет 5 + параметры. Я обратился к созданию моего собственного тупика. Очевидно, было бы лучше использовать Moq со всеми его проверками и т.д.

14
задан beerncircus 29 March 2010 в 20:13
поделиться

2 ответа

Я знаю, что это, вероятно, нарушает ваш дизайн, но с таким количеством параметров не лучше ли передать массив параметров?

{{1} }
3
ответ дан 1 December 2019 в 10:18
поделиться

На самом деле это довольно просто. Просто определите собственное Действие и все готово.

public delegate void Action<T1, T2, T3, T4, T5>(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5);

Это все, что Action, Action, ..., Action определены как в фреймворке. Ничего больше. Просто!

-1
ответ дан 1 December 2019 в 10:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: