.net core 依赖注入在特性中的应用,不知道怎么用属性注入,那么在特性中的构造函数里,怎么用接口的方法呢?
来一个简单的例子:
主要思路是把ServiceProvider 静态全局化:
public class Program { public static ServiceProvider serviceProvider=null; static void Main(string[] args) { Console.WriteLine("Hello World!"); serviceProvider = new ServiceCollection() .AddTransient<IEat, Eat>() .BuildServiceProvider(); var s = new Student(); Type t = typeof(Student); foreach (var item in t.CustomAttributes) { var aa= Activator.CreateInstance(item.AttributeType,new object[] { "apple"}); Console.WriteLine("-------"); } Console.ReadLine(); } }
这样在特性的方法中就能使用了。
Github https://github.com/qgbo/.netCore-
这种方式,不是依赖注入,而是叫Service Locator 的“模式”。参考
依赖注入,无所不在,那什么需要注入呢?好像是所有东西,实际上却是不可能的。一个Student 类,只有年龄,性别等简单的属性,这在程序中类似于Model, 或数据库中的基础表。他的构造函数里也只有基础类型的参数。这个会需要注入吗?好像没有场景,也没见过需要注入一个Student的。
这个是不需要的,注入的,一般是接口,接口是功能的抽象,也就是说注入的是功能。某一个类,需要某一个功能,那就注入这个有这个功能的接口就好。
在 .NetCore 中,DI容器中的项,叫Service, 容器叫ServiceCollcetion/serviceProvider . 强调的,这里面的内容,都是服务/功能