public UsersController(ILoggerFactory factory,
                               ILogger <UsersController> logger,
                               ITestServiceA testServiceA,
                               ITestServiceB testServiceB,
                               ITestServiceC testServiceC,
                               ITestServiceD testServiceD,
                               IConfiguration configuration
                               , IUserService userService)
        {
            this._Factory        = factory;
            this._logger         = logger;
            this._ITestServiceA  = testServiceA;
            this._ITestServiceB  = testServiceB;
            this._ITestServiceC  = testServiceC;
            this._ITestServiceD  = testServiceD;
            this._IUserService   = userService;
            this._iConfiguration = configuration;
            this._iUserService   = userService;

            this._userList = this._iUserService.Query <Zhaoxi.EntityFrameworkCore31.Model.User>(u => u.Id > 1)
                             .OrderBy(u => u.Id)
                             .Skip(1)
                             .Take(5)
                             .Select(u => new Users()
            {
                UserID    = u.Id,
                UserEmail = u.Email,
                UserName  = u.Name
            }).ToList();
        }
예제 #2
0
 public FourthController(ILogger <FourthController> logger,
                         ILoggerFactory loggerFactory
                         , ITestServiceA testServiceA
                         , ITestServiceB testServiceB
                         , ITestServiceC testServiceC
                         , ITestServiceD testServiceD
                         , ITestServiceE testServiceE
                         , IServiceProvider serviceProvider
                         , IConfiguration configuration
                         , IUserService userService
                         , DbContext dbContext
                         )
 //, DbContext dbContext)
 {
     this._logger           = logger;
     this._loggerFactory    = loggerFactory;
     this._iTestServiceA    = testServiceA;
     this._iTestServiceB    = testServiceB;
     this._iTestServiceC    = testServiceC;
     this._iTestServiceD    = testServiceD;
     this._iTestServiceE    = testServiceE;
     this._iServiceProvider = serviceProvider;
     this._iConfiguration   = configuration;
     this._dbContext        = dbContext;
     this._iUserService     = userService;
 }
        public IActionResult Index()
        {
            //ITestServiceA testServiceA = new TestServiceA();
            this._logger.LogWarning("This is SecondController Index");

            var c = this._iServiceProvider.GetService <ITestServiceC>();

            Console.WriteLine($"cc {object.ReferenceEquals(this._iTestServiceC, c)}");//T/F

            if (_iTestServiceCStatic == null)
            {
                _iTestServiceCStatic = _iTestServiceC;
            }
            else
            {
                Console.WriteLine($"C&C {object.ReferenceEquals(this._iTestServiceC, _iTestServiceCStatic)}");//两次不同的请求  //T/F
            }

            if (_iTestServiceBStatic == null)
            {
                _iTestServiceBStatic = _iTestServiceB;
            }
            else
            {
                Console.WriteLine($"B&B:{object.ReferenceEquals(this._iTestServiceB, _iTestServiceBStatic)}");//两次不同的请求  //T/F
            }


            this._iTestServiceA.Show();
            this._iTestServiceB.Show();
            this._iTestServiceC.Show();
            this._iTestServiceD.Show();
            this._iTestServiceE.Show();
            return(View());
        }
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");

            IServiceContainer serviceContainer = new ServiceContainer();


            {
                serviceContainer.Register <ITestServiceA, TestServiceA>();
                serviceContainer.Register <ITestServiceA, TestServiceA1>("A1");
                serviceContainer.Register <ITestServiceA, TestServiceA2>("A2");

                ITestServiceA testServiceA  = serviceContainer.Resolve <ITestServiceA>();
                ITestServiceA testServiceA1 = serviceContainer.Resolve <ITestServiceA>("A1");
                ITestServiceA testServiceA2 = serviceContainer.Resolve <ITestServiceA>("A2");

                testServiceA.Show();
                testServiceA1.Show();
                testServiceA2.Show();
            }

            {
                serviceContainer.Register <ITestServiceB, TestServiceB>();
                serviceContainer.Register <ITestServiceC, TestServiceC>();
                serviceContainer.Register <ITestServiceD, TestServiceD>();
                serviceContainer.Register <ITestServiceE, TestServiceE>();

                ITestServiceB testServiceB = serviceContainer.Resolve <ITestServiceB>();

                testServiceB.Show();
            }

            Console.ReadLine();
        }
예제 #5
0
 public UserDAL(ITestServiceA testServiceA, ITestServiceB testServiceB, ITestServiceC testServiceC, ITestServiceD testServiceD, ITestServiceE testServiceE)
 {
     this._iTestServiceA = testServiceA;
     this._iTestServiceB = testServiceB;
     this._iTestServiceC = testServiceC;
     this._iTestServiceD = testServiceD;
     this._iTestServiceE = testServiceE;
 }
예제 #6
0
 public IocTest(ITestServiceA serviceA,
                ITestServiceB serviceB,
                ITestServiceC serviceC)
 {
     _serviceA = serviceA;
     _serviceB = serviceB;
     _serviceC = serviceC;
 }
        public UsersController(ILoggerFactory factory,
                               ILogger <UsersController> logger,
                               ITestServiceA testServiceA,
                               ITestServiceB testServiceB,
                               ITestServiceC testServiceC,
                               ITestServiceD testServiceD,
                               IConfiguration configuration
                               , IUserService userService)
        {
            this._Factory        = factory;
            this._logger         = logger;
            this._ITestServiceA  = testServiceA;
            this._ITestServiceB  = testServiceB;
            this._ITestServiceC  = testServiceC;
            this._ITestServiceD  = testServiceD;
            this._IUserService   = userService;
            this._iConfiguration = configuration;
            this._iUserService   = userService;


            #region 为了测试方便,不从数据获取数据,使用内存
            //this._userList = this._iUserService.Query<Zhaoxi.EntityFrameworkCore31.Model.User>(u => u.Id > 1)
            //                    .OrderBy(u => u.Id)
            //                    .Skip(1)
            //                    .Take(5)
            //                    .Select(u => new Users()
            //                    {
            //                        UserID = u.Id,
            //                        UserEmail = u.Email,
            //                        UserName = u.Name
            //                    }).ToList();

            this._userList = new List <Users>()
            {
                new Users {
                    UserID = 1, UserName = "******"
                },
                new Users {
                    UserID = 2, UserName = "******"
                },
                new Users {
                    UserID = 3, UserName = "******"
                },
                new Users {
                    UserID = 4, UserName = "******"
                },
                new Users {
                    UserID = 5, UserName = "******"
                },
                new Users {
                    UserID = 6, UserName = "******"
                },
            };


            #endregion
        }
 public FirstController(ILogger <FirstController> logger, ILoggerFactory loggerFactory,
                        ITestServiceA iTestServiceA,
                        ITestServiceB iTestServiceB,
                        ITestServiceC iTestServiceC)
 {
     _logger        = logger;
     _loggerFactory = loggerFactory;
     _iTestServiceA = iTestServiceA;
     _iTestServiceB = iTestServiceB;
     _iTestServiceC = iTestServiceC;
 }
예제 #9
0
 public SecondController(ILoggerFactory loggerFactory, ILogger <SecondController> logger, ITestServiceA testServiceA, ITestServiceB testServiceB, ITestServiceC testServiceC, ITestServiceD testServiceD, IA ia, IUserService userService)
 {
     this._Factory       = loggerFactory;
     this._logger        = logger;
     this._ITestServiceA = testServiceA;
     this._ITestServiceB = testServiceB;
     this._ITestServiceC = testServiceC;
     this._ITestServiceD = testServiceD;
     this._IA            = ia;
     this._IUserService  = userService;
 }
 public SecondController(
     ITestServiceA testServiceA
     , ITestServiceB testServiceB
     , ITestServiceC testServiceC
     , ITestServiceD testServiceD)
 {
     this._iTestServiceA = testServiceA;
     this._iTestServiceB = testServiceB;
     this._iTestServiceC = testServiceC;
     this._iTestServiceD = testServiceD;
 }
예제 #11
0
 public FirstController(ILoggerFactory factory,
                        ILogger <FirstController> logger,
                        ITestServiceA testServiceA,
                        ITestServiceB testServiceB,
                        IA ia)
 {
     this._factory       = factory;
     this._logger        = logger;
     this._ITestServiceA = testServiceA;
     this._ITestServiceB = testServiceB;
     _iA = ia;
 }
예제 #12
0
 public FilterController(IConfiguration configuration,
                         ILogger <FilterController> logger,
                         ITestServiceA iTestServiceA,
                         ITestServiceB iTestServiceB,
                         ITestServiceC iTestServiceC)
 {
     _configuration = configuration;
     _logger        = logger;
     _iTestServiceA = iTestServiceA;
     _iTestServiceB = iTestServiceB;
     _iTestServiceC = iTestServiceC;
 }
예제 #13
0
 public FourthController(ILoggerFactory factory, ILogger <SecondController> ilogger,
                         ITestServiceA testServiceA,
                         ITestServiceB testServiceB,
                         ITestServiceC testServiceC,
                         ITestServiceD testServiceD,
                         IA a)
 {
     _factory      = factory;
     _ilogger      = ilogger;
     _testServiceA = testServiceA;
     _testServiceB = testServiceB;
     _testServiceC = testServiceC;
     _testServiceD = testServiceD;
     _a            = a;
 }
예제 #14
0
 public SecondController(ILoggerFactory factory, ILogger <SecondController> ilogger,
                         ITestServiceA testServiceA,
                         ITestServiceB testServiceB,
                         ITestServiceC testServiceC,
                         IEnumerable <ITestServiceD> testServiceDs,
                         IA a)
 {
     _factory       = factory;
     _ilogger       = ilogger;
     _testServiceA  = testServiceA;
     _testServiceB  = testServiceB;
     _testServiceC  = testServiceC;
     _testServiceDs = testServiceDs;
     _a             = a;
 }
예제 #15
0
 public UsersController(ILoggerFactory factory,
                        ILogger <SecondController> logger,
                        ITestServiceA testServiceA,
                        ITestServiceB testServiceB,
                        ITestServiceC testServiceC,
                        ITestServiceD testServiceD,
                        IA a)
 {
     this._Factory       = factory;
     this._logger        = logger;
     this._ITestServiceA = testServiceA;
     this._ITestServiceB = testServiceB;
     this._ITestServiceC = testServiceC;
     this._ITestServiceD = testServiceD;
     this._IA            = a;
 }
예제 #16
0
 public SecondController(ILoggerFactory loggerFactory,
                         ILogger <SecondController> logger,
                         ITestServiceA testServiceA,
                         ITestServiceB testServiceB,
                         ITestServiceC testServiceC,
                         ITestServiceD testServiceD,
                         IA a)
 {
     _loggerFactory = loggerFactory;
     _logger        = logger;
     _testServiceA  = testServiceA;
     _testServiceB  = testServiceB;
     _testServiceC  = testServiceC;
     _testServiceD  = testServiceD;
     _a             = a;
 }
예제 #17
0
 public FourthController(ILogger <FourthController> logger
                         , ITestServiceA testServiceA
                         , ITestServiceB testServiceB
                         , ITestServiceC testServiceC
                         , ITestServiceD testServiceD
                         , ITestServiceE testServiceE
                         , IA a)
 {
     this._logger        = logger;
     this._iTestServiceA = testServiceA;
     this._iTestServiceB = testServiceB;
     this._iTestServiceC = testServiceC;
     this._iTestServiceD = testServiceD;
     this._iTestServiceE = testServiceE;
     this._ia            = a;
 }
예제 #18
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public IActionResult Index()
        {
            //ITestServiceA testServiceA = new TestServiceA();
            this._logger.LogWarning("This is SecondController Index");

            //cc True
            //C & C False
            //B & B:True
            //ServiceProvoder 也是作用域单例的,同一个ServiceProvider产生的C都是一样的
            //一个请求只会产生一个ServiceProvider
            var c = this._iServiceProvider.GetService <ITestServiceC>(); //实例化服务

            //test c
            Console.WriteLine($"cc {object.ReferenceEquals(this._iTestServiceC, c)}");//T/F

            //test static c
            if (_iTestServiceCStatic == null)
            {
                _iTestServiceCStatic = _iTestServiceC;
            }
            else
            {
                Console.WriteLine($"C&C {object.ReferenceEquals(this._iTestServiceC, _iTestServiceCStatic)}");//两次不同的请求  //T/F
            }

            //test static b
            if (_iTestServiceBStatic == null)
            {
                _iTestServiceBStatic = _iTestServiceB;
            }
            else
            {
                Console.WriteLine($"B&B:{object.ReferenceEquals(this._iTestServiceB, _iTestServiceBStatic)}");//两次不同的请求  //T/F
            }

            this._iTestServiceA.Show();
            this._iTestServiceB.Show();
            this._iTestServiceC.Show();
            this._iTestServiceD.Show();
            this._iTestServiceE.Show();

            return(View());
        }
예제 #19
0
 public SecondController(ILogger <SecondController> logger,
                         ILoggerFactory loggerFactory,
                         ITestServiceA testServiceA,
                         ITestServiceB testServiceB,
                         ITestServiceC testServiceC,
                         ITestServiceD testServiceD,
                         ITestServiceE testServiceE,
                         IServiceProvider iServiceProvider
                         )
 {
     _logger                = logger;
     this._loggerFactory    = loggerFactory;
     this._iTestServiceA    = testServiceA;
     this._iTestServiceB    = testServiceB;
     this._iTestServiceC    = testServiceC;
     this._iTestServiceD    = testServiceD;
     this._iTestServiceE    = testServiceE;
     this._iServiceProvider = iServiceProvider;
 }
 public ThirdController(ILogger <ThirdController> logger,
                        ILoggerFactory loggerFactory
                        , ITestServiceA testServiceA
                        , ITestServiceB testServiceB
                        , ITestServiceC testServiceC
                        , ITestServiceD testServiceD
                        , ITestServiceE testServiceE
                        , IServiceProvider serviceProvider
                        , IConfiguration configuration)
 {
     this._logger           = logger;
     this._loggerFactory    = loggerFactory;
     this._iTestServiceA    = testServiceA;
     this._iTestServiceB    = testServiceB;
     this._iTestServiceC    = testServiceC;
     this._iTestServiceD    = testServiceD;
     this._iTestServiceE    = testServiceE;
     this._iServiceProvider = serviceProvider;
     this._iConfiguration   = configuration;
 }
예제 #21
0
 public SecondController(ILoggerFactory factory,
                         ILogger <SecondController> logger,
                         CyfMYSQLContext mysqlcontext,
                         CyfMSSQLContext mssqlcontext,
                         ITestServiceA testServiceA,
                         ITestServiceB testServiceB,
                         ITestServiceC testServiceC,
                         ITestServiceD testServiceD,
                         IA a)
 {
     this._Factory       = factory;
     this._logger        = logger;
     this._ITestServiceA = testServiceA;
     this._ITestServiceB = testServiceB;
     this._ITestServiceC = testServiceC;
     this._ITestServiceD = testServiceD;
     this._IA            = a;
     this._Mysqlcontext  = mysqlcontext;
     this._Mssqlcontext  = mssqlcontext;
 }
 /// <summary>
 /// 来自DI依赖注入---构造函数注入---构造A对象依赖B对象,自动初始化B对象传入
 ///
 /// 有个容器,负责构造SecondController(反射)--反射构造函数--需要B--再构造B---然后再构造A
 /// </summary>
 /// <param name="logger"></param>
 /// <param name="loggerFactory"></param>
 public SecondController(ILogger <SecondController> logger,
                         ILoggerFactory loggerFactory
                         , ITestServiceA testServiceA
                         , ITestServiceB testServiceB
                         , ITestServiceC testServiceC
                         , ITestServiceD testServiceD
                         , ITestServiceE testServiceE
                         , IServiceProvider serviceProvider)
 //一次注入这么多,可能用不上,能不能我自己生成? 不建议,
 //1 大部分对象生成其实很快,且不占资源--特殊可以自己控制
 //2 对象生命周期不同,注入的是跟controller的,action是跟方法的
 {
     this._logger           = logger;
     this._loggerFactory    = loggerFactory;
     this._iTestServiceA    = testServiceA;
     this._iTestServiceB    = testServiceB;
     this._iTestServiceC    = testServiceC;
     this._iTestServiceD    = testServiceD;
     this._iTestServiceE    = testServiceE;
     this._iServiceProvider = serviceProvider;
 }
예제 #23
0
 public TestServiceC(ITestServiceB iTestServiceB)
 {
 }
예제 #24
0
 public TestServiceC(ITestServiceB iTestServiceB)
 {
     testServiceB = iTestServiceB;
 }
예제 #25
0
 public TestServiceC(ITestServiceA serviceA, ITestServiceB serviceB)
 {
     _serviceA = serviceA;
     _serviceB = serviceB;
 }
예제 #26
0
 public TestServiceC(ITestServiceB testServiceB)
 {
     _iTestServiceB = testServiceB;
 }
 public TestServiceC(ITestServiceB iTestServiceB)
 {
     Console.WriteLine($"{this.GetType().Name}被构造。。。");
 }
예제 #28
0
 public UserDAL(ITestServiceA testServiceA, ITestServiceB testServiceB)
 {
     this._iTestServiceA = testServiceA;
     this._iTestServiceB = testServiceB;
 }
예제 #29
0
 public UserDAL()
 {
     this._iTestServiceA = null;
     this._iTestServiceB = null;
 }
예제 #30
0
        static void Main(string[] args)
        {
            ///容器的使用:
            ///            实例化一个容器;
            ///            注册
            ///            获取服务
            IServiceCollection container = new ServiceCollection();

            // IServiceCollection
            container.AddTransient <ITestServiceA, TestServiceA>();     // 瞬时生命周期  每一次获取的对象都是新的对象
            container.AddSingleton <ITestServiceB, TestServiceB>();     // 单例生命周期  在容器中永远只有当前这一个
            container.AddScoped <ITestServiceC, TestServiceC>();        //当前请求作用域内  只有当前这个实例

            container.AddSingleton <ITestServiceD>(new TestServiceD()); // 也是单例生命周期

            ServiceProvider provider = container.BuildServiceProvider();

            ITestServiceA testA  = provider.GetService <ITestServiceA>();
            ITestServiceA testA1 = provider.GetService <ITestServiceA>();

            Console.WriteLine(object.ReferenceEquals(testA, testA1));

            ITestServiceB testB  = provider.GetService <ITestServiceB>();
            ITestServiceB testB1 = provider.GetService <ITestServiceB>();

            Console.WriteLine(object.ReferenceEquals(testB, testB1));

            ITestServiceC testC  = provider.GetService <ITestServiceC>();
            ITestServiceC testC1 = provider.GetService <ITestServiceC>();

            Console.WriteLine(object.ReferenceEquals(testC, testC1));

            IServiceScope scope  = provider.CreateScope();
            ITestServiceC testc3 = provider.GetService <ITestServiceC>();
            var           testc4 = scope.ServiceProvider.GetService <ITestServiceC>();

            Console.WriteLine(object.ReferenceEquals(testc3, testc4));

            ITestServiceD testD  = provider.GetService <ITestServiceD>();
            ITestServiceD testD1 = provider.GetService <ITestServiceD>();

            Console.WriteLine(object.ReferenceEquals(testD, testD1));



            /*
             * Console.WriteLine("Hello World!");
             *
             * var user = new {
             *  Id=11,
             *  Name="HelloDavy",
             *  Age=18
             * };
             *
             * Console.WriteLine(user);
             * var options = new JsonSerializerOptions();
             * options.Encoder = System.Text.Encodings.Web.JavaScriptEncoder.Create(UnicodeRanges.All);
             * var json = JsonSerializer.Serialize(user,options);
             * Console.WriteLine(json);
             *
             * Console.WriteLine("**************************************");
             * {
             *  SharpSix six = new SharpSix();
             *  People people = new People()
             *  {
             *      Id = 505,
             *      Name = "马尔凯蒂"
             *  };
             *  six.Show(people);
             * }
             *
             * Console.WriteLine("**************************************");
             * {
             *  SharpSeven seven = new SharpSeven();
             *  seven.Show();
             * }*/
        }