当前位置:开发工具->.NET ->在控制台下玩玩dotnet core内置原生的DI

原创版权标志在控制台下玩玩dotnet core内置原生的DI

作者:阿郎  发表时间:2018/8/17 8:49:37  阅读:
[摘要] 在基于dotnet core的web开发中,我们会经常用到DI,那么如果单单使用dotnet core自身提供的一整套DI程序,该如何来实现呢?
使用支付宝扫码领红包,余额宝付款才可以使用红包哦!不要忘记哈。每天扫一次,天天赚红包!!可以将二维码保存到手机,每天直接扫码领红包啦!!
在基于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)

微信扫码关注公众号CPP技术网,微信号cpp_coder,关注我们的公众号,阅读更多精彩内容!每天还可以领取大红包哦!!!每天还可以领取大红包哦!!!每天还可以领取大红包哦!!!
文章来源:C++技术网原创文章版权为网站和作者共同所有,会员文章禁止转载。非会员文章转载做好本文超链接即表示授权转载。通过文章下面的分享按钮可以自由分享所有文章。

返回顶部

在线提问
问题标题:
问题描述:(简陋的描述会导致问题被最后回答、没有针对性回答甚至无法解答。请确保问题描述的足够清楚。)