Obtención de argumentos de tipo de interfaces genéricas que implementa una clase

Tengo una interfaz genérica, digamos IGeneric. Para un tipo dado, quiero encontrar los argumentos genéricos que una clase integra a través de IGeneric.

Es más claro en este ejemplo:

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

¿Cuál es la implementación de GetTypeArgsOfInterfacesOf (Tipo t)?

Nota: Se puede suponer que el método GetTypeArgsOfInterfacesOf está escrito específicamente para IGeneric.

Editar: Tenga en cuenta que estoy preguntando específicamente cómo filtrar la interfaz IGeneric de todas las interfaces que implementa MyClass.

Relacionado:Averiguar si un tipo implementa una interfaz genérica.

Respuestas a la pregunta(3)

Su respuesta a la pregunta