ImplementsInterfaces(List<Type> types)

public static List<Type> ImplementsInterfaces(this object obj, List<Type> interfaces)
        {
            if (obj == null || interfaces == null)
                return new List<Type>();

            var filter = new System.Reflection.TypeFilter(
                (Type typeObj, object criteriaObj) => { return typeObj.ToString() == criteriaObj.ToString() ? true : false; }
                );

            Func<Type, Type> func = (Type t) => { return obj.GetType().FindInterfaces(filter, t.FullName).Length > 0 ? t : null; };

            return (from i in interfaces select func(i)).Where(t => t == null ? false : true).ToList();
        }
Example:
var t = new Test();
if (t.ImplementsInterface(new List<Type> { typeof(ITest) }).Count > 0)
 { 
                //Do Something
 }

Description

Determines if a class object implements an interface type and returns a list of types it actually implements. If no matching type is found an empty list will be returned.

Details

Double click on the code to select all.

 

;