在构建我的Autofac容器时,如何将之前注册的类型作为参数包含在其他注册类型中?

问题描述 投票:0回答:1

请考虑以下问题。

        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 参数,使其与之前注册的那个有相同的设置?

c# dependency-injection autofac
1个回答
2
投票

我认为你应该使用resolve方法

builder.Register(l => new RandomObject(l.Resolve<HttpClient>(), "randomString").As<IRandomObject>();
© www.soinside.com 2019 - 2024. All rights reserved.