In C# how can i check if T is of type IInterface and cast to that if my object supports that interface?

前端 未结 8 1347
粉色の甜心
粉色の甜心 2021-02-05 10:52

In C#, I have a function that passes in T using generics and I want to run a check to see if T is an object that implements a

8条回答
  •  你的背包
    2021-02-05 11:30

    Is the OfType(...) method (link) what you're looking for?

    public class MyModel : IModel where T : MyObjectBase
    {
    
        public IQueryable GetRecords()
        {
            var entities = Repository.Query();
            if (typeof(IFilterable).IsAssignableFrom(typeof(T)))
            {
                //Filterme is a method that takes in IEnumerable
                entities = FilterMe(entities));
            }
            return entities;
        }
    
         public IEnumerable FilterMe(IEnumerable linked) where TResult :  IFilterable
        {
            var dict = GetDict();
            return linked.OfType().Where(r => dict.ContainsKey(r.Id));
        }
    }
    

提交回复
热议问题