C# 添加一个参数DI注册

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满意,这似乎很难

我有一个具有多个构造函数依赖关系的类。这可能值得重构,但以后再重构

我知道Autofac可以通过以下代码实现:

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));