如何在代码中找到接口的所有实现?

时间:2009-10-23 15:39:52

标签: c# class interface

我的问题在概念上与this question非常相似。但是,我想知道如何以编程方式识别给定命名空间中实现方法中特定接口的每个类(因此我可以将每个类的对象添加到List中),类似于Stripes Framework(在Java中)查找所有实现ActionBean接口的类。

代码示例会很棒但是如果需要的话我需要指向正确的方向。

1 个答案:

答案 0 :(得分:1)

您可以使用反射(尤其是Type.IsAssignableFrom)来检查装配中的所有类型。

这与查找命名空间中的所有类型不同。困难的部分是命名空间可以跨多个程序集使用,因为在.NET中,命名空间没有什么特别之处。它只是实际类型名称的前缀,但在IL中,它不是包含“Int32”的“System”命名空间,它是单个System.Int32类型。

我的建议是搜索程序集中的所有类型,查看类型名称是否以命名空间名称开头,然后检查接口的类型是否可从类型中分配。如果是这样,它实现了接口。对于在相关名称空间内定义类型的所有程序集重复此步骤。