Jon*_*edo 5 structuremap asp.net-mvc entity-framework code-first asp.net-mvc-3
我正在尝试如何为ASP.NET MVC3配置StructureMap我已经使用NuGet,我注意到它创建了一个名为StructuremapMVC的cs文件的App_Start文件夹,所以我检查它并注意到它是相同的代码但是简化了将在Global.asax上的App_Start部分手动编写...
这是我在IoC Class中的代码
public static class IoC
{
public static IContainer Initialize()
{
ObjectFactory.Initialize(x =>
{
x.Scan(scan =>
{
scan.TheCallingAssembly();
scan.WithDefaultConventions();
scan.AddAllTypesOf<IController>();
});
x.For<OpcionDB>().Use(() => new DatabaseFactory().Get());
});
return ObjectFactory.Container;
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是为什么当我在控制器上注入一些IoC时会出现异常(我使用这种模式:实体框架4 CTP 4/CTP 5通用存储库模式和单元可测试):
private readonly IAsambleaRepository _aRep;
private readonly IUnitOfWork _uOw;
public AsambleaController(IAsambleaRepository aRep, IUnitOfWork uOw)
{
_aRep = aRep;
this._uOw = uOw;
}
public ActionResult List(string period)
{
var rs = _aRep.ByPeriodo(period).ToList<Asamblea>();
return View();
}
Run Code Online (Sandbox Code Playgroud)
例外显示:
Exception Details: System.MissingMethodException: No parameterless constructor defined for this object.
Run Code Online (Sandbox Code Playgroud)
您收到该错误是因为您尚未设置 StructureMap 来解析构造 所需的依赖项,AsambleaController
因此它尝试找到一个不存在的无参数构造函数。
所以你需要做的是为IAsambleaRepository
和设置 StructureMap IUnitOfWork
。
顺便说一句,我想说这IUnitOfWork
应该依赖于您的存储库而不是您的控制器......您的控制器不需要了解工作单元。
归档时间: |
|
查看次数: |
3753 次 |
最近记录: |