Estoy tratando de realizar una consulta sobre las interfaces de una clase a través de la reflexión, sin embargo, el método Type.GetInterfaces() también devuelve todas las interfaces heredadas.¿Buscar solo interfaces no heredadas?
etc
public class Test : ITest { }
public interface ITest : ITesting { }
El código
typeof(Test).GetInterfaces();
devolverá un Type[]
que contiene tanto ITest
y ITesting
, en tanto que sólo quiero ITest
, ¿hay otro método que le permite especificar la herencia?
Gracias, Alex.
EDIT: De las respuestas a continuación recogí esto,
Type t;
t.GetInterfaces().Where(i => !t.GetInterfaces().Any(i2 => i2.GetInterfaces().Contains(i)));
Lo anterior parece funcionar, me corrija en los comentarios si no lo hace
¿Qué pasa si se trata de 'prueba de clase pública: ITest, ITesting'? ¿Por qué quieres esto? – SLaks
Porque me gustaría saber de qué interfaces está heredando directamente la clase? y no las interfaces de las que hereda indirectamente, para generar dinámicamente nuevos tipos. ¿Importa por qué? –
Estrictamente hablando, no * hereda * interfaces, * las implementa *, por lo que la clase 'Prueba 'proporciona una implementación de' ITest' y 'ITesting' en este caso. El hecho de que 'ITest'" herede "de' ITesting' simplemente significa que cualquier tipo que implemente 'ITest' debe proporcionar también una implementación de' ITesting'. – LukeH