¿Cómo verificar si una clase hereda otra clase sin instanciarla?

Supongamos que tengo una clase que se ve así:

class Derived : // some inheritance stuff here { } 

Quiero verificar algo como esto en mi código:

 Derived is SomeType; 

Pero parece que el operador necesita derivada para ser variable del tipo Dervied, no derivada. No quiero crear un objeto de tipo Derivado.
¿Cómo puedo asegurarme de que Derived hereda SomeType sin instanciarlo?

PD: si ayuda, quiero algo como qué hace la palabra clave con generics.
EDITAR:
Similar a esta respuesta, pero está revisando un objeto. Quiero verificar la clase en sí.

Para verificar la Type.IsAssignableFrom , puede usar el método Type.IsAssignableFrom :

 typeof(SomeType).IsAssignableFrom(typeof(Derived)) 

Esto funcionará como espera usted para la igualdad de tipos, las relaciones de herencia y las implementaciones de interfaz, pero no cuando está buscando ‘asignabilidad’ en operadores de conversión explícitos / implícitos.

Para verificar la herencia estricta, puede usar Type.IsSubclassOf :

 typeof(Derived).IsSubclassOf(typeof(SomeType)) 

Prueba esto

 typeof(IFoo).IsAssignableFrom(typeof(BarClass)); 

Esto le dirá si BarClass(Derived) implementa IFoo(SomeType) o no