在这个函数中:
public List<T> getX<T>(SPListItemCollection itemCollection, List<T> itemList, Report RO, WebpartSettings WPS, bool isFolder)
{
foreach (SPListItem item in itemCollection)
{
if (have_permissions_for_item(WPS.EDIT_MODE, item, RO))
{
itemList.Add(isFolder ? (T)item.Folder : (T)item);
}
}
return itemList;
}
它使用参数多态性,我得到一个itemcollection并浏览它,如果它是正确的权限,则将其添加到列表中,然后返回列表。返回的列表是 type T,所以它可以是 typeSPFolder或者SPListItem基于我的代码。
for 循环中的项目已经是 type SPListItem,如果T是 type ,SPFolder那么我必须调用该.Folder项目的方法。我不能只检测到这一点,所以我不得不使用辅助变量来决定是否需要使用它。
但问题是即使我这样做了,我仍然会在尝试将其强制转换为 type 时遇到错误T。
T将是SPFolder当我调用该.Folder方法时,否则T将是类型SPListItem。
有没有人看到解决这个问题?
谢谢。