【发布时间】:2011-10-18 08:55:52
【问题描述】:
我目前有以下需要参数的方法 - 我无法更改此方法定义:
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 并附加下一个参数。
谢谢,
丹尼斯
【问题讨论】: