我有这个方法
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>
?
任何人都知道如何解决这个问题?