通用接口的通用方法

时间:2017-04-21 17:01:37

标签: c# generics casting generic-method generic-interface

我有这个方法

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>

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

0 个答案:

没有答案