Можно ли в C# хранить команды выполнения в списке и выполнять в цикле - PullRequest
3 голосов
/ 27 мая 2020

Допустим, у меня есть следующие строки кода:

 callBacksToSend.Send(vaProxy, "a1", "b1");
 callBacksToSend.Send(vaProxy, "a2", "b2", c2);
 callBacksToSend.Send(vaProxy, "a3", "b3");
 callBacksToSend.Send(vaProxy, "a4", "b4");
.
.
.
 callBacksToSend.Send(vaProxy, "an", "bn", cn);

Как я могу сохранить все вышеперечисленное в СПИСКЕ, массиве или словаре и запустить в al oop? Мне это нужно, потому что я хочу запускать проверку после выполнения каждой команды.

Ответы [ 2 ]

4 голосов
/ 27 мая 2020

Вы можете использовать лямбда-выражения, чтобы сделать что-то вроде этого

var actions = new List<Action>() {
   () => foo.Send(vaProxy, "a1", "b1"),
   () => foo.Send(vaProxy, "a2", "b2", c2)
   //....
};

foreach (var a in actions) {
    a();
    Console.WriteLine("did an action!");
}
1 голос
/ 27 мая 2020

Вместо списка делегатов я предлагаю использовать список аргументов

var args = new[] { new[] { "a1", "b1" }, new[] { "a2, "b2" }, ... };
foreach(var arg in args)
    callbacks.Send(vaProxy, arg[0], arg[1]);

Если args может отличаться, вы также можете извлечь какой-то класс для них:

class Arg
{
    string Item1;
    string Item2;
    int Item3;
    ...
}

Теперь создайте список из них и l oop их:

var args = new[] { new Arg { ... }, new Arg { ... }, ...};
foreach(var arg in args)
    callbacks.Send(vaProxy, arg);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...