List<CormantRadPane> panesToSave = new List<CormantRadPane>();
foreach (KeyValuePair<string, RadPaneSetting> paneState in RadControlStates.PaneStates)
{
CormantRadPane pane = Utilities.FindControlRecursive(Page, paneState.Key) as CormantRadPane;
panesToSave.Add(pane);
}
foreach (CormantRadPane pane in panesToSave)
{
RadControlSave.SavePane(pane);
}
Run Code Online (Sandbox Code Playgroud)
RadControlSave.SavePane(窗格)修改RadControlStates.PaneStates集合.在这种情况下编写此代码有更好的方法吗?
编辑:每个人都请阅读我在字面上写的内容.Jimmy发布了一个我没有的明显解决方案 - 在迭代之前创建集合的副本,以便RadControlSave不会修改正在迭代的集合.
一种方法是在PaneStates上调用ToArray()(制作副本,因为你无法修改foreach中的序列)
foreach(var state in RadControlStates.PaneStates.ToArray()) {
var pane = Utilities.FindControlRecursive(Page, state.Key) as CormantRadPane;
RadControlSave.SavePane(pane);
}
Run Code Online (Sandbox Code Playgroud)