Exemplo n.º 1
0
        static void Autofac(int loop)
        {
            var builder = new ContainerBuilder();
            // Register individual components
            var injector = new ServiceInjector();

            injector.Register(new[] { typeof(Program).Assembly });
            builder.RegisterInstance <IServiceInjector>(injector);
            builder.RegisterType <Logger>();
            builder.RegisterType <Service>().PropertiesAutowired();
            builder.RegisterType <TestDispose>().Keyed <IDisposable>(1).PropertiesAutowired();
            builder.RegisterType <Dispose2>().Keyed <IDisposable>(2).PropertiesAutowired();
            var container = builder.Build();

            Console.WriteLine(nameof(Autofac));
            var sw = Stopwatch.StartNew();

            using var scope = container.BeginLifetimeScope();

            for (var i = 0; i < loop; i++)
            {
                var test  = scope.ResolveKeyed <IDisposable>(1);
                var test2 = scope.ResolveKeyed <IDisposable>(2);
            }
            sw.Stop();
            Console.WriteLine(sw.ElapsedMilliseconds);
        }
        public static IServiceCollection AddServiceInjector(this IServiceCollection services,
                                                            IEnumerable <Assembly> assemblies, out IServiceInjector injector)
        {
            var concreteInjector = new ServiceInjector();

            injector = concreteInjector;

            concreteInjector.Register(assemblies);

            return(services.AddSingleton(injector));
        }
Exemplo n.º 3
0
        // This method gets called by the runtime. Use this method to add services to the container.
        // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddTransient <IProductDAL, ProductDAL>();

            services.AddMvc(option => option.EnableEndpointRouting = false);

            services.AddControllers().AddNewtonsoftJson();

            // MariaDb Register
            MariaDbInjector.Register(services, _configuration);

            // Services Register
            ServiceInjector.Register(services);
        }