我有这个方法
public static void ReadExcelToKeyableList<T, TKey>() where T : IKeyable<TKey>, IExcel
{
List<T> keyableList = GetList(typeof(T));
T getKeyable;
该方法中的部分代码是这样的:
foreach (IExcel xl in toList)
if (xl is T)
{
(keyableList[keyableList.IndexOf(getKeyable)] = (xl as T)).Update();
}
我得到下一个错误
类型参数“T”不能与“as”运算符一起使用,因为它没有类类型约束,也没有“类”约束
我试图将代码更改为此:
(keyableList[keyableList.IndexOf(getKeyable)] = (xl as IKeyable<TKey>)).Update();
现在我得到这个错误:
无法将类型“DataService.Classes.IKeyable”隐式转换为“T”。存在显式转换(您是否缺少演员表?)
为什么即使我设置了也不能将 IKeyable 转换为 T where T : IKeyable<TKey>
?
任何人都知道我该如何解决这个问题?