2009-10-23 31 views
1

我的问题在概念上与this question非常相似。但是,我想知道如何以编程方式标识给定名称空间中的每个类,这些类在方法中实现了特定的接口(因此我可以将每个对象添加到列表中),类似于Stripes框架(Java中)发现的所有实现ActionBean接口的类。如何在代码中找到接口的所有实现?

代码示例会很好,但如果需要的话还需要指出正确的方向。

+0

你也可能会发现这个问题相关http://stackoverflow.com/questions/1304882/ – 2009-10-23 15:43:42

回答

1

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

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

相关问题