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