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没有解决。你有什么建议吗,我应该检查什么?

Unity不能解决我的类

我认为你需要交换这两行:

config.DependencyResolver = new UnityResolver(container);
new CommonUnityConfiguration().Configurate(container);

在CommonUnityConfiguration类中完全配置它之前,你正在将DependencyResolver设置为UnityREsolver