Obtendo argumentos de tipo de interfaces genéricas que uma classe implementa

Eu tenho uma interface genérica, digamos IGeneric. Para um determinado tipo, eu quero encontrar os argumentos genéricos que uma classe implementa via IGeneric.

Está mais claro neste exemplo:

Class MyClass : IGeneric<Employee>, IGeneric<Company>, IDontWantThis<EvilType> { ... }

Type t = typeof(MyClass);
Type[] typeArgs = GetTypeArgsOfInterfacesOf(t);

// At this point, typeArgs must be equal to { typeof(Employee), typeof(Company) }

Qual é a implementação de GetTypeArgsOfInterfacesOf (Type t)?

Nota: Pode-se supor que o método GetTypeArgsOfInterfacesOf foi escrito especificamente para IGeneric.

Editar: Por favor, note que estou especificamente perguntando como filtrar a interface IGeneric de todas as interfaces que o MyClass implementa.

Relacionado:Descobrir se um tipo implementa uma interface genérica

questionAnswers(3)

yourAnswerToTheQuestion