В C # как я могу проверить, если T имеет тип IInterface и привести к этому, если мой объект поддерживает этот интерфейс?

В C # у меня есть функция, которая проходит вT с помощьюgenerics и я хочу запустить проверку, чтобы увидеть, еслиT являетсяobject который реализуетinterface и если так, позвоните одному изmethods на томinterface.

Я не хочу иметьT ограничения должны быть только этого типа. Можно ли это сделать?

Например:

public class MyModel<T> : IModel<T> where T : MyObjectBase
{
    public IQueryable<T> GetRecords()
    {
        var entities = Repository.Query<T>();
        if (typeof(IFilterable).IsAssignableFrom(typeof(T)))
        {
            //Filterme is a method that takes in IEnumerable<IFilterable>
            entities = FilterMe(entities));
        }
        return entities;
    }

    public IEnumerable<TResult> FilterMe<TResult>(IEnumerable<TResult> linked) where TResult : IFilterable
    {
        var dict = GetDict();
        return linked.Where(r => dict.ContainsKey(r.Id));
    }
 }

Ошибка, которую я получаю:

Ошибка 21 Тип «TResult» нельзя использовать в качестве параметра типа «TResult» в универсальном типе или методе «FilterMe (System.Collections.Generic.IEnumerable)». Не существует неявного преобразования ссылок из «TResult» в «IFilterable».

Ответы на вопрос(8)

Ваш ответ на вопрос