第
.net通过Action进行Options参数的传递的方法
在.NETCore中,使用Action和Options参数方式配置服务并将配置信息对象注册到IServiceCollection的好处在于,它提供了更高级别的可配置性和可扩展性。这种模式允许将配置信息与服务的实现分离,使配置更加模块化和可管理。通过将配置信息对象注册到IServiceCollection,可以轻松将其注入到需要的服务中,从而使配置信息对整个应用程序都可用。
以下是如何配置邮件发送服务并将配置信息对象注册到IServiceCollection的示例:
首先,让我们创建一个配置信息对象EmailServiceOptions,用于定义邮件发送的配置选项:
usingSystem;
publicclassEmailServiceOptions
publicstringSmtpServer{get;set;}
publicintSmtpPort{get;set;}
publicstringSenderEmail{get;set;}
publicstringSenderPassword{get;set;}
}
接下来,我们将创建一个邮件发送服务EmailService,它使用EmailServiceOptions作为配置参数,并将其注册到IServiceCollection:
usingSystem;
usingSystem.Net;
usingSystem.Net.Mail;
publicclassEmailService
privatereadonlyEmailServiceOptions_options;
publicEmailService(EmailServiceOptionsoptions)
_options=options;
publicvoidSendEmail(stringto,stringsubject,stringmessage)
using(varclient=newSmtpClient(_options.SmtpServer,_options.SmtpPort))
client.Credentials=newNetworkCredential(_options.SenderEmail,_options.SenderPassword);
client.EnableSsl=true;
varmail=newMailMessage(_options.SenderEmail,to,subject,message);
client.Send(mail);
Console.WriteLine($已发送邮件给:{to});
}
现在,让我们创建一个.NETCore控制台应用程序来演示如何配置和使用EmailService服务,并将配置信息对象注册到IServiceCollection:
usingSystem;
usingMicrosoft.Extensions.DependencyInjection;
classProgram
staticvoidMain(string[]args)
//创建依赖注入容器
varserviceProvider=newServiceCollection()
.AddScopedEmailService()//注册EmailService服务
.ConfigureEmailServiceOptions(options=
options.SmtpServer=;
options.SmtpPort=587;
options.SenderEmail=sender@;
options.SenderPassword=mypassword;
.BuildServiceProvider();
//获取EmailService服务
varemailService=serviceProvider.GetRequiredServiceEmailService
//发送邮件
emailService.SendEmail(recipient@,TestEmail,Thisisatestemailmessage.);
Console.ReadLine();
}
在这个示例中,我们首先创建了依赖注入容器,并