我有一个 WizardInfo 类,它有几个 TLists 作为属性,然后在用户通过最后一个屏幕上的向导时填充我查询 Tlists 并将它们变成列表和私有字段然后我从这些列表中创建 DefaultItems 的列表。这是我自己的课程,名称和 ID 作为其属性。他是一些代码
public class DefaultItem
{
public int ID {get;set;}
public string Name {get;set;}
}
private List<DefaultItem> _defaultList = null;
_defaultList = new List<DefaultItem>();
defaultValue = PopulateDefaultList(_asmgps, defaultList);
private int PopulateDefaultList(
List<ASGMP> asmgps,
ref List<DefaultItem> defaultList)
{
int isdefault = -1;
foreach (ASGMP asgmp in asgmps)
{
if (asgmp.IsChecked)
{
if (asgmp.IsDefault)
{
isdefault = asgmp.ID;
}
DefaultItem defaultItem = new DefaultItem();
defaultItem.ID = asgmp.ID;
defaultItem.Name = GetMPTName(asgmp.ID);
defaultList.Add(defaultItem);
}
}
return isdefault;
}
private string GetMPTName(int ID)
{
try
{
SGMP sgmp = DataRepository.SGMPProvider.GetByASGMPID(ID)
if (serviceGroupMailPresentation != null)
{
MPT mpt DataRepository.MPTProvider.GetByMPTID(SGMP.MPTID);
if (mailPresentationType != null)
{
return mpt.Name;
}
}
return string.Empty;
}
catch (Exception ex)
{
WindowsEventLog.Write(ex);
throw;
}
}
我遇到的问题是,当我从 defaultList 中删除一个项目时,它会影响 asgmp。 我找到了答案。当我得到 mpt 名称时,我从数据库中得到 asgmp,这是 Codesmith 做一件奇怪的事情并将 List 和 DefaultList 的用法连接起来的地方。通过查询原始列表而不是转到数据库,它现在可以正常工作。