在控制台下玩玩dotnet core内置原生的DI
程序员文章站
2022-12-29 15:52:15
转载请注明出处:http://www.cnblogs.com/zhiyong-ITNote/ 在基于dotnet core的web开发中,我们会经常用到DI,那么如果单单使用dotnet core自身提供的一整套DI程序,该如何来实现呢?直接上代码吧: public interface IBar { ......
转载请注明出处:http://www.cnblogs.com/zhiyong-itnote/
在基于dotnet core的web开发中,我们会经常用到di,那么如果单单使用dotnet core自身提供的一整套di程序,该如何来实现呢?
直接上代码吧:
public interface ibar { void methodone(); void methodtwo(); } public class bar : ibar { public void methodone() { console.writeline("methone...."); } public void methodtwo() { console.writeline("methtwo...."); } }
我们写个控制器类:
public class miancontroller { private iservicecollection _services; private iserviceprovider _serviceprovider; private ibar _bar; public miancontroller(iservicecollection services) { _services = services; _serviceprovider = _services.buildserviceprovider(); _bar = _serviceprovider.getservice<ibar>(); } public void actionone() { _bar.methodone(); } public void actiontwo() { using (var scope = _serviceprovider.createscope()) { var bar = scope.serviceprovider.getservice<ibar>(); bar.methodtwo(); } } } main函数: static void main(string[] args) { iservicecollection services = new servicecollection(); services.addscoped<ibar, bar>(); var controller = new miancontroller(services); controller.actionone(); controller.actiontwo(); console.read(); }
这里用到了正常的di方法也有少用的createscope方法,这两者都是用来获取指定服务的。具体可以参考 asp.net core 依赖注入实现全过程粗略剖析(3)
转载请注明出处:http://www.cnblogs.com/zhiyong-itnote/