我有一个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...
}