我有一个 MVC3 Web 应用程序,其中控制器使用服务来执行某些任务。我用来分别实例化每个操作中所需的服务,例如:
public ActionResult Index()
{
ICustomService customService = new CustomService();
var list = customService.ReturnSomething();
.....
return View(list)
}
这工作正常。然后我决定使用 MEF 进行依赖注入,以遵循更好的设计原则。所以现在我正在做这样的事情:
public class MyController : Controller
{
[Import]
private ICustomService _customService;
public MyController()
{
MEFManager.Compose(this);
}
public ActionResult Index()
{
var list = _customService.ReturnSomething();
return View(list);
}
组合由 MEFManage.Compose(this) 完成,它是以下函数:
public static void Compose(object o)
{
var container = new CompositionContainer(
new DirectoryCatalog(Path.Combine(
AppDomain.CurrentDomain.BaseDirectory, "bin"))
);
var batch = new CompositionBatch();
batch.AddPart(o);
container.Compose(batch);
}
这实际上是可行的,但它比我不使用 MEF 时慢 6 到 7 倍。有谁知道为什么这么慢?我做错了什么?