В настоящее время у меня есть следующий метод, который требует params - я не могу изменить определение этого метода:
public static DoStuff(params Parameter[] p){ /* ... */ }
Я не знаю, сколько параметров у меня будет во время выполнения, поэтому я хочу передать массив или список - я думал об использовании итераторов, например:
List<Parameter> pList = new List<Parameter>();
pList.Add(new Parameter("@a", "aaaa!");
pList.Add(new Parameter("@b", "bbbb!");
pList.Add(new Parameter("@c", "cccc!");
DoStuff(Iterate(pList));
А вот итерационный метод:
public static IEnumerator<Parameter> Iterate(List<Parameter> pList)
{
foreach (Parameter p in pList)
yield return p;
}
К сожалению, он не работает, он постоянно говорит мне, что не может привести (сгенерированный тип) к CommandParameter.
Буду признателен за любую помощь (или другие подходы)!
Редактировать: Оказывается, пытаясь упростить мое решение ради понимания моего вопроса, я тривиализировал свою проблему.
В дополнение к этому массиву, я хотел бы также передать «нормальные» параметры, такие как:
DoStuff(Iterate(pList), new Parameter("@d", "dddd!"));
Я делаю это просто из любопытства, чтобы посмотреть, работает ли он - но это не работает, просто приведя мой List
к Array
и добавив следующий параметр.
Спасибо
Dennis