Как при создании контейнера Autofa c я могу включить ранее зарегистрированные типы в качестве параметров в другие зарегистрированные типы? - PullRequest
0 голосов
/ 23 апреля 2020

Примите во внимание следующее:

        public static IContainer Configure()
        {
            var builder = new ContainerBuilder();

            // Register a named HttpClient instance as a singleton.
            builder.Register(_ =>
            {
                var client = new HttpClient
                {
                    MaxResponseContentBufferSize = int.MaxValue,
                    Timeout = TimeSpan.FromMinutes(50)
                };

                client.DefaultRequestHeaders.Add("Connection", "Keep-Alive");
                client.DefaultRequestHeaders.Add("Keep-Alive", "3600");
                return client;
            })
            .SingleInstance();

            builder.Register(l => new RandomObject(new HttpClient, "randomString")).As<IRandomObject>();


            return builder.Build();
        }

При регистрации моего RandomObject, как мне заменить этот экземпляр new HttpClient в моем ранее зарегистрированном HttpClient? Если это не так, есть ли способ обновить параметр HttpClient, чтобы он имел те же настройки, что и ранее зарегистрированный?

1 Ответ

2 голосов
/ 23 апреля 2020

Я думаю, вы должны использовать метод разрешения для этого

builder.Register(l => new RandomObject(l.Resolve<HttpClient>(), "randomString").As<IRandomObject>();
...