如何查找实现接口和执行方法的已加载程序集的所有成员

时间:2013-07-10 10:30:37

标签: asp.net-mvc reflection

我有一个MVC应用程序,它具有单独的区域作为单独的项目(模块化架构)。这些项目中的每一个都具有实现接口的特定控制器。所以,我可以使用这段代码获得实现该接口的所有加载程序集......

var type = typeof(IAreaRegistration);
var types = AppDomain.CurrentDomain.GetAssemblies().ToList()
                .SelectMany(s => s.GetTypes())
                .Where(p => type.IsAssignableFrom(p))
                .Where(i => i.IsInterface == false)
                .ToList();

我的问题是,如何在不使用 Activator.CreateInstance() 的情况下对查询中找到的每种类型执行接口方法,它实质上会加载一个新的实例输入内存?我有以下代码可以使用,但就像我说的,它创建了一个新实例,我不认为这是最好的方法。

foreach (var item in types)
{
    var cls = Activator.CreateInstance(item) as IAreaRegistration;
    // call interface members here...
}

0 个答案:

没有答案