core控制器属性注入的用处_.net core 依赖注入在特性中的应用

.net core 依赖注入在特性中的应用,不知道怎么用属性注入,那么在特性中的构造函数里,怎么用接口的方法呢?

来一个简单的例子:

主要思路是把ServiceProvider 静态全局化:

public classProgram

{public static ServiceProvider serviceProvider=null;static void Main(string[] args)

{

Console.WriteLine("Hello World!");

serviceProvider= newServiceCollection()

.AddTransient()

.BuildServiceProvider();var s = newStudent();

Type t= typeof(Student);foreach (var item int.CustomAttributes)

{var aa= Activator.CreateInstance(item.AttributeType,new object[] { "apple"});

Console.WriteLine("-------");

}

Console.ReadLine();

}

}

这样在特性的方法中就能使用了。

这种方式,不是依赖注入,而是叫Service Locator 的“模式”。参考

依赖注入,无所不在,那什么需要注入呢?好像是所有东西,实际上却是不可能的。一个Student 类,只有年龄,性别等简单的属性,这在程序中类似于Model, 或数据库中的基础表。他的构造函数里也只有基础类型的参数。这个会需要注入吗?好像没有场景,也没见过需要注入一个Student的。

这个是不需要的,注入的,一般是接口,接口是功能的抽象,也就是说注入的是功能。某一个类,需要某一个功能,那就注入这个有这个功能的接口就好。

在 .NetCore 中,DI容器中的项,叫Service, 容器叫ServiceCollcetion/serviceProvider . 强调的,这里面的内容,都是服务/功能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值