【发布时间】:2014-08-15 11:57:51
【问题描述】:
我在解决方案中有更多项目(主要是类库和一个 WebAPI 项目),并且在 Common 项目中解决该项目内部的依赖项时遇到问题。这是我如何设置依赖项的示例
[Dependency]
public IDbContextFactory DbContextFactory
{
get { return _factory; }
set
{
_factory = value;
DbContext = _factory.Create();
}
}
[Dependency]
public IUnitOfWorkManager Manager
{
get { return _manager; }
set
{
_manager = value;
_manager.AddOpenUnitOfWork(this);
}
}
在同一个项目中,我通过此类将接口和类注册到 Unity 容器中
public class CommonUnityConfiguration : IUnityConfiguration
{
public void Configurate(UnityContainer container)
{
container
.RegisterType<IUnitOfWorkManager, UnitOfWorkManager>()
.RegisterType<IDbContextFactory, DbContextFactory>();
}
}
最后在 WebAPI 中我有 WebApiConfiguration,我在其中创建 Unity 容器并注册所有类。
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Create instance for Unity container - let's try to run!
var container = new UnityContainer();
container.RegisterType<IUserRepository, UserRepository>(new HierarchicalLifetimeManager());
config.DependencyResolver = new UnityResolver(container);
// Add project classes to IoC container
new CommonUnityConfiguration().Configurate(container);
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
问题是,IDbContextFactory 属性和 IUnitOfWorkManager 没有解决。你有什么建议,我应该检查什么?
【问题讨论】:
标签: c# asp.net-web-api dependency-injection unity-container unit-of-work