В этой функции:Получение ошибки с параметрическим полиморфизмом в C#
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
и просматривать его и добавить его в список, если он в качестве правильных разрешений, а затем вернуть список. Возвращаемый список имеет тип T
, поэтому он может быть типа SPFolder
или SPListItem
на основе моего кода.
деталь в течение цикла уже типа SPListItem
, и если T
был типа SPFolder
то я должен вызвать метод .Folder
по данному вопросу. Я не могу просто обнаружить это, поэтому мне пришлось использовать вспомогательную переменную, чтобы решить, нужно ли мне ее использовать.
Но проблема в том, что я делаю это. Я все еще получаю сообщение об ошибке, пытаясь наложить его на тип T
.
T
будет SPFolder
, когда я вызываю метод .Folder
и T
будет тип SPListItem
иначе.
Кто-нибудь видит исправление для этого?
Спасибо.
У 'SPFolder' и' SPListItem' есть какие-либо типы? Вам нужно ограничить 'T' некоторым распространенным типом и изменить' itemList' как 'List'. –
Lee