Универсальный метод с универсальным интерфейсом
У меня есть этот метод
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", поскольку он не имеет ограничения типа класса или ограничения "class"
Я пытался изменить код на этот:
(keyableList[keyableList.IndexOf(getKeyable)] = (xl as IKeyable<TKey>)).Update();
И теперь я получаю эту ошибку:
Невозможно неявно преобразовать тип "DataService.Classes.IKeyable" в "T". Существует явное преобразование (вам не хватает приведения?)
Почему я не могу конвертировать IKeyable в T, даже если я установил where T : IKeyable<TKey>
?
Кто-нибудь есть идеи, как я могу решить это?