0

我有这个方法

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>

任何人都知道我该如何解决这个问题?

4

0 回答 0