【发布时间】:2019-09-05 07:10:56
【问题描述】:
假设我有接口 IA 和 IB:
public interface IA {}
public interface IB : IA {}
现在我想要直接实现 IA 的类的列表,但没有那些实现 IB 和其他从 IA 继承的接口的类。
如果我有 Foo 和 Bar 类:
public class Foo : IA {}
public class Bar : IB {}
我希望我的代码只返回 Foo 类。我想我可以通过反思来做到这一点。我有方法返回所有实现 IA 的类的列表,但现在我不知道下一步该做什么。
var types = Assembly.Load("abc").GetTypes();
return types.Where(i => typeof(IA).IsAssignableFrom(i) && i.IsClass);
【问题讨论】:
-
首先获取继承自
IA的接口列表。然后使用您当前的代码。现在从第一个列表中排除任何可以分配给Any的内容。 -
i.GetInterfaces()告诉你i实现了哪些接口,所以你可以检查一下。 -
我将尝试使用 GetInterfaces。我会告诉你它是否有效。
标签: c# reflection