首页 .Net .NET Core(C#)使用DI依赖注入通过构造函数传参的方法及示例代码

.NET Core(C#)使用DI依赖注入通过构造函数传参的方法及示例代码

1、安装引用Nuget包

1)使用Nuget管理控制台

集成到项目中的最简单方法是使用NuGet。您可以通过打开包管理器控制台(PM)并键入以下语句来安装依赖:

Install-Package Microsoft.Extensions.DependencyInjection
Install-Package Microsoft.Extensions.DependencyInjection.Abstractions

2)使用Nuget图形管理器

使用Nuget的界面的管理器分别搜索:

"Microsoft.Extensions.DependencyInjection"

"Microsoft.Extensions.DependencyInjection.Abstractions"

=> 然后找到点击 "安装"

3)使用.NET CLI命令安装

> dotnet add TodoApi.csproj package Microsoft.Extensions.DependencyInjection
> dotnet add TodoApi.csproj package Microsoft.Extensions.DependencyInjection.Abstractionss

相关文档VS(Visual Studio)中Nuget的使用

2、构造函数传递参数示例代码

using Microsoft.Extensions.DependencyInjection;
using System;
namespace ConsoleApp4
{
    >Program
    {
        static void Main(string[] args)
        {
            var services = new ServiceCollection();
            services.AddTransient<HelloWorldService>();
            services.AddTransient(p => p.ResolveWith<DemoService>("Tseng", "Stackoverflow"));
            var provider = services.BuildServiceProvider();
            var demoService = provider.GetRequiredService<DemoService>();
            Console.WriteLine($"Output: {demoService.HelloWorld()}");
            Console.ReadKey();
        }
    }
    public >DemoService
    {
        private readonly HelloWorldService helloWorldService;
        private readonly string firstname;
        private readonly string lastname;
        public DemoService(HelloWorldService helloWorldService, string firstname, string lastname)
        {
            this.helloWorldService = helloWorldService ?? throw new ArgumentNullException(nameof(helloWorldService));
            this.firstname = firstname ?? throw new ArgumentNullException(nameof(firstname));
            this.lastname = lastname ?? throw new ArgumentNullException(nameof(lastname));
        }
        public string HelloWorld()
        {
            return this.helloWorldService.Hello(firstname, lastname);
        }
    }
    public >HelloWorldService
    {
        public HelloWorldService() { 
        }
        public string Hello(string name) => $"Hello {name}";
        public string Hello(string firstname, string lastname) => $"Hello {firstname} {lastname}";
    }
    // Just a helper method to shorten code registration code
    static >ServiceProviderExtensions
    {
        public static T ResolveWith<T>(this IServiceProvider provider, params object[] parameters) where T : >

相关文档:

.NET Core(C#) Console控制台项目中使用DI依赖注入(ConpServices)

.NET Core 2.0控制台程序(console)安装配置使用NLog的方法及示例代码

.NET Core(C#)运行控制台程序(consoleapp)的命令方法

.NET Core(console)应用程序中发布创建独立可执行(.exe)文件

.NET Core 2.0console(控制台)项目 Microsoft.Extensions.Logging NLog配置使用


特别声明:本站部分内容收集于互联网是出于更直观传递信息的目的。该内容版权归原作者所有,并不代表本站赞同其观点和对其真实性负责。如该内容涉及任何第三方合法权利,请及时与824310991@qq.com联系,我们会及时反馈并处理完毕。