我试图通过反射在类的接口(interface)上执行查询,但是方法Type.GetInterfaces()也返回所有继承的接口(interface)。
等等
public class Test : ITest { }
public interface ITest : ITesting { }
编码
typeof(Test).GetInterfaces();
将返回一个同时包含
Type[]
和ITest
的ITesting
,在这里,我只想要ITest
,还有另一种方法可以让您指定继承吗?谢谢,
亚历克斯
编辑:
从下面的答案中我收集到了这一点,
Type t;
t.GetInterfaces().Where(i => !t.GetInterfaces().Any(i2 => i2.GetInterfaces().Contains(i)));
以上似乎有效,如果不正确,请在评论中纠正我
最佳答案
您可以尝试如下操作:
Type[] allInterfaces = typeof(Test).GetInterfaces();
var exceptInheritedInterfaces = allInterfaces.Except(
allInterfaces.SelectMany(t => t.GetInterfaces())
);
因此,如果您有这样的事情:
public interface A : B
{
}
public interface B : C
{
}
public interface C
{
}
public interface D
{
}
public class MyType : A, D
{
}
该代码将返回 A 和 D
关于c# - 仅查找非继承接口(interface)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7563269/