我在我的MVC应用中使用了统一性
我的Bootstapper.cs文件中有以下RegisterTypes方法:
public static void RegisterTypes(IUnityContainer container)
{
container.RegisterType<AccountController>(new InjectionConstructor());
container.RegisterType<IModelContext, ModelContext>();
container.RegisterType<IModelRepository, ModelRepository>();
}
我有以下控制器:
public class APIScoresController : ApiController
{
private IModelRepository _repo;
public APIScoresController(IModelRepository repo)
{
_repo = repo;
}
public IEnumerable<Result> Get()
{
return _repo.GetResults();
}
}
我有以下型号回购:
public class ModelRepository : IModelRepository
{
ModelContext _ctx;
public ModelRepository(ModelContext ctx)
{
_ctx = ctx;
}
public IQueryable<DomainClasses.Result> GetResults()
{
return _ctx.Results;
}
}
当我尝试在APIScoresController上执行GET时,我得到以下异常:
An error occurred when trying to create a controller of type 'APIScoresController'. Make sure that the controller has a parameterless public constructor
我希望团结一致来创建所需的ModelContext和ModelRepository对象。任何想法为什么不这样做?
答案 0 :(得分:0)
由需要不同版本system.web.http的web api注册引起的问题。我试图将web api添加到现有的mvc5应用程序 - 糟糕的主意!我进入了一种dll地狱的形式,这是我从VB6 COM时代以来没有经历过的。最后,我的解决方案是使用web api项目创建一个新的解决方案,然后重新适应mvc项目。