Пример #1
0
        private static void TestAbstractFactory()
        {
            IDbFactory factory  = new AccessFactory();
            var        userRepo = factory.CreateUserRepo();
            var        deRepo   = factory.CreateDepartmentRepo();

            deRepo.CreateDepartment(null);
            userRepo.Insert(null);

            factory  = new SqlServerFactory();
            userRepo = factory.CreateUserRepo();
            userRepo.Insert(null);


            #region AbstractFactory + Reflection

            var departmentRepo = DataAccess.CreateDepartmentRepo();
            departmentRepo.CreateDepartment(null);

            #endregion AbstractFactory + Reflection

            #region AbstractFactory + DependencyInjection

            var builder = new ContainerBuilder();
            builder.RegisterType <SqlServerFactory>().As <IDbFactory>();
            var container = builder.Build();

            var dbFactory = container.Resolve <IDbFactory>();
            dbFactory.CreateDepartmentRepo().CreateDepartment(null);

            #endregion AbstractFactory + DependencyInjection
        }