C# 添加一个参数DI注册
我有一个具有多个构造函数依赖关系的类。这可能值得重构,但以后再重构 我知道Autofac可以通过以下代码实现:C# 添加一个参数DI注册,c#,asp.net-core,dependency-injection,.net-core,C#,Asp.net Core,Dependency Injection,.net Core,我有一个具有多个构造函数依赖关系的类。这可能值得重构,但以后再重构 我知道Autofac可以通过以下代码实现: builder.RegisterType<ConfigReader>() .As<IConfigReader>() .WithParameter("configSectionName", "sectionName"); 我可以添加一些类型,比如RootContractConfig并注册它,但我不得不修改API以使DI满意,这似乎很难
builder.RegisterType<ConfigReader>()
.As<IConfigReader>()
.WithParameter("configSectionName", "sectionName");
我可以添加一些类型,比如
RootContractConfig
并注册它,但我不得不修改API以使DI满意,这似乎很难看。根据设计,ASP.NET内核中的内置DI只支持入门所需的一小部分功能。对于更高级的场景,可以用不同的DI容器替换内置的DI容器
因此,如果您想使用Autofac,可以将内置DI替换为或。根据设计,ASP.NET Core中的内置DI只支持入门所需的一小部分功能。对于更高级的场景,可以用不同的DI容器替换内置的DI容器
因此,如果您想使用Autofac,您可以将内置DI替换为或。内置DI本来就是简单的。Autofac应该有一个.Net核心扩展,可以替换默认的DI以满足您的需求。内置的DI是为了简单。Autofac应该有一个.Net核心扩展,可以替换默认DI以满足您的需求。
serviceCollection.AddTransient<IPollService, PollService>(provider => new PollService(
provider.GetService<IEthereumSettings>(),
provider.GetService<EthereumClientProvider>(),
provider.GetService<ABIDeserialiser>(),
provider.GetService<ConstructorCallEncoder>(),
provider.GetService<IJsonSerializer>(),
provider.GetService<ILogger>(),
rootContractAddress));