예제 #1
0
        static void Main(string[] args)
        {
            var serviceCollection = new ServiceCollection();

            //ITank是静态类型,typeof后才能拿到动态的类型描述
            //AddScoped方法有多种重载,这里调用的是第一个参数为一个类型,第二个参数为谁实现了这个类型
            serviceCollection.AddScoped(typeof(ITank), typeof(HeavyTank));
            serviceCollection.AddScoped(typeof(IVehicle), typeof(Car));
            serviceCollection.AddScoped <Driver>();
            var serviceProvider = serviceCollection.BuildServiceProvider();
            //-------------------以上为注册-------------------------------
            ITank tank = serviceProvider.GetService <ITank>();

            tank.Fire();
            tank.run();
            //--------------------------------------------------------------
            Driver driver = serviceProvider.GetService <Driver>();

            driver.Drive();
        }