Em C # como eu posso verificar se T é do tipo IIinterface e lançar para que, se meu objeto suporta essa interface?

Em C #, tenho uma função que passa emT usandogenerics e eu quero passar um cheque para ver seT é umobject que implementa uminterface e se assim for, chame um dosmethods naquilointerface.

Eu não quero terT restrições para apenas ser desse tipo. É possível fazer isso?

Por exemplo:

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));
    }
 }

O erro que estou recebendo é:

Erro 21 O tipo 'TResult' não pode ser usado como parâmetro de tipo 'TResult' no tipo genérico ou método 'FilterMe (System.Collections.Generic.IEnumerable)'. Não há conversão de referência implícita de 'TResult' para 'IFilterable'.

questionAnswers(8)

yourAnswerToTheQuestion