1

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

0 回答 0