下面是四个完整的控制台示例,展示了如何使用和不使用依赖项注入框架来执行属性和方法注入。
### 1.使用依赖注入框架的属性注入方法
我们继续使用.NET Core内置的依赖注入框架来实现属性注入。
“cs 锐利
使用系统;
使用Microsoft.Extensions.DependencyInjection。
命名空间DI 示例
{
//定义可邮寄接口
接口可邮寄
{
无效发送();
}
//实现Mailable 接口的具体类
班级电子邮件: 可邮寄
{
公共无效发送()
{
Console.WriteLine(\’发送电子邮件通知用户\’);
}
}
//类排序
班级秩序
{
[ActivatorUtilities构造函数]
公共秩序() {}
//属性注入
publicmailablemail { 设置;
公共无效完成()
{
Console.WriteLine(\’订单已完成,状态已更新\’);
发送电子邮件?Send();
}
}
课程计划
{
静态无效主(字符串[]参数)
{
var serviceProvider=new ServiceCollection()
.AddTransientMailable, 电子邮件()
.AddTransientOrder()
.BuildServiceProvider();
var order=serviceProvider.GetServiceOrder();
order.Mail=serviceProvider.GetServiceMailable();
订单完成();
Console.ReadLine();
}
}
}
””
### 2.使用依赖注入框架的方法注入
“c 锐利
使用系统;
使用Microsoft.Extensions.DependencyInjection。
命名空间DI 示例
{
接口可邮寄
{
无效发送();
}
班级电子邮件: 可邮寄
{
公共无效发送()
{
Console.WriteLine(\’发送电子邮件通知用户\’);
}
}
班级秩序
{
[ActivatorUtilities构造函数]
公共秩序() {}
public void 完整(可邮寄的电子邮件)
{
Console.WriteLine(\’订单已完成,状态已更新\’);
邮件发送();
}
}
课程计划
{
静态无效主(字符串[]参数)
{
var serviceProvider=new ServiceCollection()
.AddTransientMailable, 电子邮件()
.AddTransientOrder()
.BuildServiceProvider();
var order=serviceProvider.GetServiceOrder();
var mail=serviceProvider.GetServiceMailable();
订单。完成(电子邮件);
Console.ReadLine();
}
}
}
””
### 3.避免使用框架属性注入方法。
“c 锐利
使用系统;
命名空间DI 示例
{
接口可邮寄
{
无效发送();
}
班级电子邮件: 可邮寄
{
公共无效发送()
{
Console.WriteLine(\’发送电子邮件通知用户\’);
}
}
班级秩序
{
//属性注入
publicmailablemail { 设置;
公共无效完成()
{
Console.WriteLine(\’订单已完成,状态已更新\’);
发送电子邮件?Send();
}
}
课程计划
{
静态无效主(字符串[]参数)
{
订单order=new Order();
order.Mail=新邮件();
订单完成();
Console.ReadLine();
}
}
}
””
### 4.无框架方法注入
“c 锐利
使用系统;
命名空间DI 示例
{
接口可邮寄
{
无效发送();
}
班级电子邮件: 可邮寄
{
公共无效发送()
{
Console.WriteLine(\’通过发送电子邮件通知用户\’);
}
}
班级秩序
{
public void 完整(可邮寄的电子邮件)
{
Console.WriteLine(\’订单已完成,状态已更新\’);
邮件发送();
}
}
课程计划
{
静态无效主(字符串[]参数)
{
订单order=new Order();
可邮寄的电子邮件=new Email();
订单。完成(电子邮件);
Console.ReadLine();
}
}
}
这四个示例分别演示了使用和不使用依赖项注入框架的属性注入和方法注入。
结论是:
1.框架属性注入和方法注入比较简洁,但需要了解和配置框架。
2.无框架的属性注入和方法注入更加直接,适合简单的场景或者不熟悉框架的情况。
### 使用依赖注入框架的构造函数注入方法
使用系统;
使用Microsoft.Extensions.DependencyInjection。
命名空间DI 示例
{
接口IMailable
{
无效发送();
}
班级电子邮件: IMailable
{
公共无效发送()
{
Console.WriteLine(\’通过发送电子邮件通知用户\’);
}
}
班级秩序
{
私有只读IMailable _mail;
//构造函数注入
公共秩序(可邮寄的邮件)
{
_mail=电子邮件;
}
公共无效完成()
{
Console.WriteLine(\’订单已完成,状态已更新\’);
_mail.Send();
}
}
课程计划
{
静态无效主(字符串[]参数)
{
var serviceProvider=new ServiceCollection()
.AddTransientIMailable, 电子邮件()
.AddTransientOrder()
.BuildServiceProvider();
var order=serviceProvider.GetServiceOrder();
订单完成();
Console.ReadLine();
}
}
}
### 无依赖注入框架的构造函数注入方法
使用系统;
命名空间DI 示例
{
接口IMailable
{
无效发送();
}
班级电子邮件: IMailable
{
公共无效发送()
{
Console.WriteLine(\’通过发送电子邮件通知用户\’);
}
}
班级秩序
{
私有只读IMailable _mail;
//构造函数注入
公共秩序(可邮寄的邮件)
{
_mail=电子邮件;
}
公共无效完成()
{
Console.WriteLine(\’订单已完成,状态已更新\’);
_mail.Send();
}
}
课程计划
{
静态无效主(字符串[]参数)
{
IMailable 邮件=new Email();
订单订单=新订单(电子邮件);
订单完成();
Console.ReadLine();
}
}
}
#上面关于如何使用和不使用框架依赖注入进行注入的相关内容来源网络,仅供参考。相关信息请参见官方公告。
原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/92511.html