Преобразование класса в дженерики в C#
class BackupVirtualDataSource : AbstractVirtualListDataSource { List<BackUpInfo> Objects; public int ItemCount = 0; //BackUpInfo public BackupVirtualDataSource(VirtualObjectListView listView, List<BackUpInfo> ObjList) : base(listView) { this.Objects = ObjList; ItemCount = (ObjList == null) ? 0 : ObjList.Count; } public override int GetObjectIndex(object model) { return this.Objects.IndexOf((BackUpInfo)model); } public override object GetNthObject(int n) { BackUpInfo p = null; try { p = this.Objects[n % this.Objects.Count]; return p; } catch (Exception ex) { cGlobalSettings.oLogger.WriteLogException("| BackupVirtualDataSource.cs::GetNthObject() |", ex); } finally { p = null; } return p; } public override int GetObjectCount() { return ItemCount; } }
я хочу преобразовать следующий класс в дженерики, но получаю ошибку
Имя типа или пространства имен не может быть найден
Что я уже пробовал:
class BackupVirtualDataSource : AbstractVirtualListDataSource { List<T> Objects; public int ItemCount = 0; //BackUpInfo public BackupVirtualDataSource(VirtualObjectListView listView, List<T> ObjList) : base(listView) { this.Objects = ObjList; ItemCount = (ObjList == null) ? 0 : ObjList.Count; } public override int GetObjectIndex(object model) { return this.Objects.IndexOf((T)model); } public override object GetNthObject(int n) { T p = null; try { p = this.Objects[n % this.Objects.Count]; return p; } catch (Exception ex) { cGlobalSettings.oLogger.WriteLogException("| BackupVirtualDataSource.cs::GetNthObject() |", ex); } finally { p = null; } return p; } public override int GetObjectCount() { return ItemCount; } }
Philippe Mori
Ваш GetNthObject
функция слишком длинна и вводит в заблуждение. Следующий код намного лучше и гораздо проще для понимания.
public override object GetNthObject(int n)
{
try
{
return this.Objects[n % this.Objects.Count];
}
catch (Exception ex)
{
cGlobalSettings.oLogger.WriteLogException(
"| BackupVirtualDataSource.cs::GetNthObject() |", ex);
}
return null;
}