在这个函数中:
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
。
有没有人看到解决这个问题?
谢谢。