private static void AddInterface(ICollection<Type> types, Type type) { if (types.Contains(type)) return; types.Add(type); foreach (Type t in type.GetInterfaces()) { AddInterface(types, t); } }