Example #1
0
 static void Main(string[] args)
 {
     try
     {
         IServiceCollection services = new ServiceCollection();
         services.AddTransient <InterfaceA, ServiceA>();
         services.AddSingleton <InterfaceB, ServiceB>(); //进程单例
         services.AddScoped <InterfaceC, ServiceC>();    //作用域单例
         var container = services.BuildServiceProvider();
         {
             System.Console.WriteLine("-----------------------1-----------");
             var A1 = container.GetService <InterfaceA>();
             var A2 = container.GetService <InterfaceA>();
             System.Console.WriteLine(A1.Equals(A2)); System.Console.WriteLine("-----------------------2-----------");
             var B1 = container.GetService <InterfaceB>();
             var B2 = container.GetService <InterfaceB>();
             System.Console.WriteLine(B1.Equals(B2)); System.Console.WriteLine("-----------------------3-----------");
             var        C1 = container.GetService <InterfaceC>();
             var        C2 = container.GetService <InterfaceC>();
             var        C3 = container.CreateScope().ServiceProvider.GetService <InterfaceC>();
             var        C4 = container.CreateScope().ServiceProvider.GetService <InterfaceC>();
             InterfaceC C5 = null, C6 = null, C7 = null;
             Task.Run(() =>
             {
                 C5 = container.GetService <InterfaceC>();
             });
             Task.Run(() =>
             {
                 C6 = container.GetService <InterfaceC>();
             }).ContinueWith(t =>
             {
                 C7 = container.GetService <InterfaceC>();
             });
             //Thread.Sleep(2000);
             System.Console.WriteLine("-----------------------aaa-----------");
             //System.Console.WriteLine(C1.Equals(C2));
             //System.Console.WriteLine(C1.Equals(C3));
             //System.Console.WriteLine(C1.Equals(C4));
             //System.Console.WriteLine(C2.Equals(C4));
             //System.Console.WriteLine(C3.Equals(C5));
             //System.Console.WriteLine(C3.Equals(C6));
             //System.Console.WriteLine(C3.Equals(C7));
             System.Console.WriteLine(C5.Equals(C6));
             System.Console.WriteLine(C5.Equals(C7));
             System.Console.WriteLine(C6.Equals(C7));
             System.Console.ReadLine();
         }
     }
     catch (Exception ex)
     {
         System.Console.WriteLine(ex.ToString());
     }
 }