开发手册 欢迎您!
软件开发者资料库

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

本文主要介绍.NET Core(C#) Console项目中,使用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{    class Program    {        static void Main(string[] args)        {            var services = new ServiceCollection();            services.AddTransient();            services.AddTransient(p => p.ResolveWith("Tseng", "Stackoverflow"));            var provider = services.BuildServiceProvider();            var demoService = provider.GetRequiredService();            Console.WriteLine($"Output: {demoService.HelloWorld()}");            Console.ReadKey();        }    }    public class 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 class 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 class ServiceProviderExtensions    {        public static T ResolveWith(this IServiceProvider provider, params object[] parameters) where T : class =>            ActivatorUtilities.CreateInstance(provider, parameters);    }}

相关文档:

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

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

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

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

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