Esempio n. 1
0
        static void Main(string[] args)
        {
            //Console.WriteLine("Hello World!");
            //IDIPContainer dIPContainer = new DIPContainer();
            #region IOC容器
            //dIPContainer.Register<IUserBLL, UserBLL>(paramlist: new object[] { "Lily", 5 });
            //dIPContainer.Register<IUserDAL, UserDAL>();
            //dIPContainer.Register<IUserDAL, UserDALMySql>("mysql");
            //dIPContainer.Register<IServiceA, ServiceA>(paramlist: new object[] { 43 });
            //dIPContainer.Register<IServiceB, ServiceB>();
            //dIPContainer.Register<IServiceC, ServiceC>();
            //dIPContainer.Register<IServiceD, ServiceD>();
            ////dIPContainer.Register<IUserBLL, UserBLL>();

            ////IUserDAL userDALMySql = dIPContainer.Resolve<IUserDAL>("mysql");
            //IUserBLL userBLL = dIPContainer.Resolve<IUserBLL>();

            #endregion            //IUserDAL userDAL = ObjectFactory.CreateDAL();

            // dIPContainer.Register<IServiceB, ServiceB>(lifeTimeType: LifeTimeType.PerThread);

            // IServiceB serviceB1 = dIPContainer.Resolve<IServiceB>();
            // IServiceB serviceB2 = dIPContainer.Resolve<IServiceB>();

            // //IDIPContainer container1 = dIPContainer.CreateSubDIPContainer();
            // //IDIPContainer container2 = dIPContainer.CreateSubDIPContainer();

            // //IServiceB serviceB11 = container1.Resolve<IServiceB>();
            // //IServiceB serviceB12 = container1.Resolve<IServiceB>();
            // //IServiceB serviceB21 = container2.Resolve<IServiceB>();
            // //IServiceB serviceB22 = container2.Resolve<IServiceB>();

            // //Console.WriteLine(object.ReferenceEquals(serviceB1, serviceB2));
            // //Console.WriteLine(object.ReferenceEquals(serviceB11, serviceB21));
            // //Console.WriteLine(object.ReferenceEquals(serviceB12, serviceB22));
            // //Console.WriteLine(object.ReferenceEquals(serviceB11, serviceB12));
            // //Console.WriteLine(object.ReferenceEquals(serviceB21, serviceB22));

            // IServiceB serviceB3 = null;
            // IServiceB serviceB4 = null;
            // IServiceB serviceB5 = null;

            // //Task.Run(() =>
            // //{
            // //    Console.WriteLine($" B3 This is Thread {Thread.CurrentThread.ManagedThreadId}");
            // //    serviceB3 = dIPContainer.Resolve<IServiceB>();
            // //});
            // Task.Run(() =>
            // {
            //     Console.WriteLine($" B4 This is Thread {Thread.CurrentThread.ManagedThreadId}");
            //     serviceB4 = dIPContainer.Resolve<IServiceB>();
            // }).ContinueWith(t =>
            // {
            //     //Task.Run(() =>
            //     //{
            //     Console.WriteLine($"B5 This is Thread {Thread.CurrentThread.ManagedThreadId}");
            //     serviceB5 = dIPContainer.Resolve<IServiceB>();
            //     //});
            // }
            //).GetAwaiter().GetResult();
            // Thread.Sleep(1000);
            // CustomCallContext<object>.ShowValue();
            // Console.WriteLine(object.ReferenceEquals(serviceB1, serviceB2));
            // Console.WriteLine(object.ReferenceEquals(serviceB1, serviceB3));
            // Console.WriteLine(object.ReferenceEquals(serviceB1, serviceB4));
            // Console.WriteLine(object.ReferenceEquals(serviceB1, serviceB5));
            // Console.WriteLine(object.ReferenceEquals(serviceB2, serviceB3));
            // Console.WriteLine(object.ReferenceEquals(serviceB2, serviceB4));
            // Console.WriteLine(object.ReferenceEquals(serviceB2, serviceB5));
            // Console.WriteLine(object.ReferenceEquals(serviceB3, serviceB4));
            // Console.WriteLine(object.ReferenceEquals(serviceB3, serviceB5));
            // Console.WriteLine(object.ReferenceEquals(serviceB4, serviceB5));

            //IUserBLL userBLL = ObjectFactory.CreateBLL(userDAL);
            //UserModel userModel= userBLL.Login("Administrator");
            //Console.WriteLine(userModel.Name);

            //CustomAOPTest.Show();
            IDIPContainer dIPContainer = new DIPContainer();
            dIPContainer.Register <IServiceB, ServiceB>(lifeTimeType: LifeTimeType.Singleton);
            IServiceB serviceB = dIPContainer.Resolve <IServiceB>();
            serviceB.SayHello();
            serviceB.SayWhy();
            serviceB = (IServiceB)ContainerAOPExtend.AOP(serviceB, typeof(IServiceB));
            serviceB.SayHello();
            serviceB.SayWhy();
        }