using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using System;
namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
ServiceCollection services = new ServiceCollection();
//services.AddTransient<IFly, Pig>();
//services.AddSingleton<IFly, Pig>();
services.AddScoped<IFly, Pig>();
services.AddLogging(options =>
{
options.AddConsole().SetMinimumLevel(LogLevel.Debug);
});
var provider = services.BuildServiceProvider();
//验证scope生命周期
var scope1 = provider.CreateScope();
var service = scope1.ServiceProvider.GetService<IFly>();
//var service = provider.GetService<IFly>();
var scope2 = provider.CreateScope();
var service2 = scope2.ServiceProvider.GetServices<IFly>();
//var service2 = provider.GetService<IFly>();
var logService = provider.GetService<ILoggerFactory>();
service.Fly();
Console.Read();
}
}
public interface IFly
{
void Fly();
}
public class Pig : IFly
{
ILogger<Pig> logger = null;
public Pig(ILoggerFactory loggerFactory)
{
Console.WriteLine("构造函数被调用");
logger= loggerFactory.CreateLogger<Pig>();
}
public void Fly()
{
logger.LogDebug("这是Console的日志");
Console.WriteLine("风口来了,猪都可以飞起来");
}
}
}