在控制台进行依赖注入(DI in Console)

首先我们准备两个服务接口

    public interface IServiceA
    {
        void showConsole();
        int GetValue(int val);
    }

  

    public  interface IServiceB
    {
        void DoWork();
        string ShowName();
    }

  接着我们分别实现两个接口

    public class ServiceA : IServiceA
    {
        private IServiceB _serviceB { get; }
        public ServiceA(IServiceB serviceB)
        {
            _serviceB = serviceB;
        }

        public int GetValue(int val)
        {
            return val;
        }

        public void showConsole()
        {
            _serviceB.ShowName();
        }
    }

  

    class ServiceB : IServiceB
    {
        private Microsoft.Extensions.Logging.ILogger _log { get; }

        public ServiceB(ILogger<ServiceB> logger)
        {
            _log = logger;
        }
        public void DoWork()
        {
            _log.LogInformation($" I am doing work ");
        }
        public string ShowName()
        {
            _log.LogInformation($" At Time :{DateTime.Now.ToString()} 被调用");
            return "I am ServiceB ";
        }
    }

  在主函数中这么写

 static void Main(string[] args)
        {
            var serviceProvider = new ServiceCollection()
            .AddLogging()
            .AddTransient<IServiceB, ServiceB>()
            .AddTransient<IServiceA, ServiceA>()
            .BuildServiceProvider();

            serviceProvider.GetService<ILoggerFactory>().AddConsole(LogLevel.Debug);
            var Logger = serviceProvider
                                        .GetService<ILoggerFactory>()
                                        .CreateLogger<Program>();
            Logger.LogDebug("Starting Program");
            var serviceB = serviceProvider.GetService<IServiceB>();
            serviceB.DoWork();
            var serviceA = serviceProvider.GetService<IServiceA>();
            var k = serviceA.GetValue(12345);
            Console.WriteLine(k);
            serviceA.showConsole();
            Logger.LogInformation("All Done ");
            Console.ReadLine();
}

  提示需要引入的Nuget包

<ItemGroup>
    <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="1.1.1" />
    <PackageReference Include="Microsoft.Extensions.Logging" Version="1.1.2" />
    <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="1.1.2" />
    <PackageReference Include="Microsoft.Extensions.Logging.Console" Version="1.1.2" />
  </ItemGroup>  

  运行结果:

 

转载于:https://www.cnblogs.com/qulianqing/p/7347427.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值