Unity不能解决我的类
本文关键字:我的 解决 不能 Unity | 更新日期: 2023-09-27 18:18:12
我在解决方案中有更多的项目(主要是类库和一个WebAPI项目),我在解决这个项目内的依赖关系的公共项目中有问题。下面是我如何设置依赖
的示例 [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没有解决。你有什么建议吗,我应该检查什么?
我认为你需要交换这两行:
config.DependencyResolver = new UnityResolver(container);
new CommonUnityConfiguration().Configurate(container);
在CommonUnityConfiguration类中完全配置它之前,你正在将DependencyResolver设置为UnityREsolver