我会教你写DI

2019-05-13 20:18 来源:admin
带DI框架
你教我在上一节写过DI_0_DI吗?
我明白DI是什么。
接下来,让我们看看并重现支持构造函数注入的DI。
首先,让我们看一下构建器注入代码的格式。
classMovieLister
privateIMovieFinderfinder;
publicMovieLister(IMovieFinderfinder){

Finder =搜索
然后我们就可以开始休息了
嗯。
这个搜索引擎来自哪里?
我们是新手吗?
我是新手,我们应该怎么做DI?
我不是在寻找东西
好吧,让我们来看看微软。
扩展功能
设计依赖注入,毕竟我们是白色的,我们什么都不懂。
用法示例如下。
Varprovider = newServiceCollection()//声明一组服务定义,可以理解为我们的启动并列出您想雇用的人员

AddTransientIXX,XX()//添加临时服务定义。这是我们工作的公告
//对于你所有的老板,你可以使用XX“人”(类)作为IXX“动物”(接口)。例如,我们的广告是美丽的,精湛的工艺,IXX将转向黎明。
//我们的工作更危险,可以认为是暂时的。一个人完成之后,我再也不能这样做,所以每次我们工作,我们都要再次招募。

BuildServiceProvider(); //这是身份构建条目的创建。您可以理解我们已将招聘广告发布到人才市场。每次我们必须做某事时,我们都可以打电话。
Varxx =提供者
GetService(typeof(IXX)); //我们称之为:嘿,人才市场的负责人?
我想移动IXX砖块。
过了一会儿,蛇的脑袋将IXX送到我们家门口。
XX。
DoSomethings(); //与xx相同,你将移动砖块
哦,哦,我们只是想舔这样的东西
然后你会看到每个看起来像鬼。
ServiceCollection:
publicclassServiceCollection:IServiceCollection
//
//摘要:
//指定合同以选择描述服务器。
publicinterfaceIServiceCollection:IListServiceDescriptor,ICollectionServiceDescriptor,IEnumerableServiceDescriptor,IEnumerable
哦,那是ServiceDescriptor集合。
AddTransient:
publicstaticIServiceCollectionAddTransientTService,Timplementation(。
Vardescriptor = newServiceDescriptor(serviceType,ImplementationFactory,life time);

添加(描述符)。
退货收集
哦,这是一个addServiceDescriptor。
服务描述符:
publicclassServiceDescriptor
publicServiceDescriptor(TypeserviceType,TypeimplementationType,ServiceLifetimelifetime);

//
//摘要:
//指定Microsoft服务的服务期限。
扩展功能
DependencyInjection
IServiceCollection。
publicenumServiceLifetime
//
//摘要:
//指定要创建的服务的唯一实例。
Singleton = 0,
//
//摘要:
//指定要为每个范围创建的新服务实例。
//
//调查结果:
// InASP
NETCore应用程序是根据每个用户的请求创建的。
范围= 1,
//
//摘要:
//指定服务的新实例
//请求
瞬态= 2
哦,哦,ServiceDescriptor是一个解释。
那么BuildServiceProvider呢?
publicstaticIServiceProviderBuildServiceProvider(thisIServiceCollectionservices){

returnnewServiceProvider(xxx);
//
//摘要:
//定义获取服务对象的机制。这是它的目的
//为其他对象提供自定义支持。
publicinterfaceIServiceProvider
//
//摘要:
//获取指定类型的服务对象。
//
//参数:
// serviceType:
//对象对象指定服务对象的类型。
//
//返回值:
// AserviceobjectoftypeserviceType。
-Or-null如果有服务对象
// oftypeserviceType。
objectGetService(TypeserviceType);
因此,可以实现这些抽象。
让我们考虑如何进入这些抽象实现。
它将在下一章中解释。
下一章,Freehand Builder Injection。