Какой из них получает больше производительности для внедрения зависимостей в ядре .net - PullRequest
0 голосов
/ 24 октября 2018

Я работаю вместе с ядром .net и внедрением зависимостей.Но есть кое-что, в чем я не уверен в производительности.Обычно сервисы определяются в конструкторе, но мне не нужны некоторые сервисы внутри метода.Не приводит ли это к потере производительности?

Является ли это невыгодным использованием в следующей строке?

    public ValuesController(ICompanyService companyService, IOnlineUserService onlineUserService, IXService xService, ..., ..., ..., ...,)
    {

    }

Не более ли выгодно использовать это в следующей строке?

public virtual IActionResult UseCompanyServiceMethod()
        {
            ICompanyService _companyService = CtorContainer.Provider.GetRequiredService<ICompanyService>();
            /*
               ...
             */
        }

        public virtual IActionResult AnyMethod()
        {
            IOnlineUserService onlineUserService = CtorContainer.Provider.GetRequiredService<IOnlineUserService>();
            IXService xService = CtorContainer.Provider.GetRequiredService<IXService>();
            ... = CtorContainer.Provider.GetRequiredService <...> ();
            /*
               ...
             */
        }

        public virtual IActionResult Method()
        {
            ... = CtorContainer.Provider.GetRequiredService <...> ();
            ... = CtorContainer.Provider.GetRequiredService <...> ();
            ... = CtorContainer.Provider.GetRequiredService <...> ();
            ... = CtorContainer.Provider.GetRequiredService <...> ();
            /*
               ...
             */
        }

CtorContainer.cs

public static class CtorContainer
{
    public static IConfiguration Configuration { get; set; }
    public static IMapper Mapper { get; set; }

    public static IServiceProvider Provider { get; set; }
}

startup.cs

    public void ConfigureServices(IServiceCollection services)
    {
        CtorContainer.Provider = services.BuildServiceProvider();
    }
...