Внедрение зависимостей с Unity работает в контроллерах и веб-API, но не в областях - PullRequest
0 голосов
/ 04 мая 2019

Привет, я использую Unity для DI в моем проекте. У меня есть две области в названии моего проекта «Admin» и «User». Все работает нормально, за исключением случаев, когда я использую DI в моем контроллере области «Admin». «Конструктор без параметров определен для этого объекта». Хотя он отлично работает в WebApi и контроллерах за пределами моей области

public static class UnityConfig
{
    public static void RegisterComponents()
    {
        var container = new UnityContainer();

        // register all your components with the container here
        // it is NOT necessary to register your controllers

        // e.g. container.RegisterType<ITestService, TestService>();

        DependencyResolver.SetResolver(new UnityDependencyResolver(container));
        container.RegisterType<IEmailSender, SendEmailFromGmail>();
    }
}




public class UnityResolver : IDependencyResolver
{
    private readonly IUnityContainer _container;

    public UnityResolver(IUnityContainer container)
    {
        _container = container;
    }

    public object GetService(Type serviceType)
    {
        try
        {
            return _container.Resolve(serviceType);
        }
        catch (ResolutionFailedException)
        {
            return null;
        }
    }

    public IEnumerable<object> GetServices(Type serviceType)
    {
        try
        {
            return _container.ResolveAll(serviceType);
        }
        catch (ResolutionFailedException)
        {
            return new List<object>();
        }
    }

    public IDependencyScope BeginScope()
    {
        var child = _container.CreateChildContainer();
        return new UnityResolver(child);
    }

    public void Dispose()
    {
        _container.Dispose();
    }
}
...