现在,这就是我所拥有的:
它所做的是遍历预设功能列表,该列表由用户配置。它通过像这样循环遍历 DataGridList 来做到这一点:
foreach (DataGridRow row in configTable.Items)
{
ConfigRow crow = (ConfigRow)row.Item; //ConfigRow is just a generic class for the row values
string val1 = crow.colValue;
string val2 = crow.colValue2;
//...Some other, irrelevant code for parsing user-set variables in the values...
if (actions.actions.ContainsKey(crow.colType))
{
((Action<String, String, String>)actions.actions[crow.colType]).Invoke(crow.colMethod, val1, val2);
}
}
在我的行动课上,我有一个
Dictionary<string, Action<String, String, String>>
命名为“actions”,其中包含预设的功能,例如用于收集源代码的功能:
actions["Get source"] = (Action<String, String, String>)delegate(String method, String val1, String val2)
{
using (WebClient wb = new WebClient())
{
if (method == "POST")
{
wb.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
variable = wb.UploadString(val1, val2);
}
else
{
variable = wb.DownloadString(val1);
}
}
window.appendConsole("Retrieved contents of '" + val1 + "' using " + method + " method");
};
现在,我想为循环添加一些预设函数,使用方法“start”进行循环,使用方法“end”进行循环,如果需要,可能还有方法“break”。但是按照它的工作方式,遍历每个函数并执行它,我怎么能有一个循环函数呢?我虽然这样做,所以当找到一个循环函数时,它将一个变量设置为循环函数的索引,一旦它到达“结束”函数,它就会回到前面提到的索引,直到满足设置的要求,但是会出现问题使用多个循环,如此处所示:
loopA
loopB
...
stopB //loopA would stop at stopB and not stopA as it was intented to do.
stopA
这个问题对我来说是一个谜,它让我很生气,因为它是一个非常重要的功能,而且是绝对需要的。