Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            var services = new ServiceContainer();

            services.AddType <IFakeContextAccessor, FakeContextAccessor>(Lifetime.Singleton);
            services.AddType <IFakeContextFactory, FakeContextFactory>(Lifetime.Singleton);

            var resolver = services.Build();

            var factory = resolver.Resolve <IFakeContextFactory>();

            var currentContext = factory.Create();

            var accessor = resolver.Resolve <IFakeContextAccessor>();

            var context = accessor.FakeContext;

            //currentContext == context应为true
            Console.WriteLine(currentContext == context);

            //context != null应为true
            Console.WriteLine(context != null);

            Console.ReadKey();
        }
Ejemplo n.º 2
0
        static void Main(string[] args)
        {
            //创建一个容器
            IServiceContainer services = new ServiceContainer();

            services.Configure(config =>
            {
                config.Interceptors.AddTyped <SampleInterceptor>();
            });

            services.AddType <ISampleService, SampleService>();
            services.AddType <ISampleRepository, SampleRepository>();

            //使用类型注册服务
            services.AddType <ILogger, Logger>();
            //使用实例注册服务,服务的生命周期限定为单例
            services.AddInstance <ITaskService>(new TaskService());
            //使用委托工厂注册服务
            services.AddDelegate <ITaskService, TaskService>(resolver => new TaskService());

            //创建服务解析器
            IServiceResolver serviceResolver = services.Build();

            //解析单个服务
            ISampleService sampleService = serviceResolver.Resolve <ISampleService>();

            //解析单个服务,并且验证是否为null,为null则抛出异常
            ISampleService sampleServiceRequired = serviceResolver.ResolveRequired <ISampleService>();

            //解析服务集合,如果未注册,则为空集合
            IEnumerable <ISampleService> sampleServices = serviceResolver.ResolveMany <ISampleService>();
        }
Ejemplo n.º 3
0
        private static void Init()
        {
            var container = new ServiceContainer();

            container.AddType <CustomService>();
            container.AddType <ILogger, ConsoleLogger>();
            container.AddType <ICustomService, CustomService>();

            DependencyResolver.SetDependencyResolver(container.Build());

            var interceptorCollection = new InterceptorCollection();

            interceptorCollection.AddTyped <CustomInterceptorAttribute>();
        }
Ejemplo n.º 4
0
        static void Main(string[] args)
        {
            var serviceContaniner = new ServiceContainer();

            serviceContaniner.AddType <ITaskService, TaskService>();

            var containerBuilder = new ContainerBuilder();

            //调用Populate扩展方法在Autofac中注册已经注册到ServiceContainer中的服务(如果有)。注:此方法调用应在RegisterDynamicProxy之前
            containerBuilder.Populate(serviceContaniner);

            var configuration = serviceContaniner.Configuration;

            //调用RegisterDynamicProxy扩展方法在Autofac中注册动态代理服务和动态代理配置
            containerBuilder.RegisterDynamicProxy(configuration, config =>
            {
                config.Interceptors.AddTyped <MethodExecuteLoggerInterceptor>(Predicates.ForService("*Service"));
            });

            var container = containerBuilder.Build();

            var taskService = container.Resolve <ITaskService>();

            taskService.Run();
        }
Ejemplo n.º 5
0
        static void Main(string[] args)
        {
            //var target = new RegisterInput { Name = "lemon", Email = "*****@*****.**", Password = "******" };
            //var validationResults = new List<ValidationResult>();
            //var context = new ValidationContext(target, null, null);
            //var isValid = Validator.TryValidateObject(target, context, validationResults, true);

            var services = new ServiceContainer();

            services.AddType <IAccountService, AccountService>();

            services.AddDataAnnotations();

            var serviceResolver = services.Build();
            var accountService  = serviceResolver.Resolve <IAccountService>();

            accountService.Register(new RegisterInput {
                Name = null, Email = null
            });
            accountService.Register(new RegisterInput {
                Name = "lemon", Email = "lemon", Password = "******"
            });
            accountService.Register(new RegisterInput {
                Name = "lemon", Email = "*****@*****.**", Password = "******"
            });
            accountService.Register(new RegisterInput {
                Name = "lemon", Email = "*****@*****.**", Password = "******"
            });

            Console.ReadKey();
        }
Ejemplo n.º 6
0
        static void Main(string[] args)
        {
            IServiceContainer services = new ServiceContainer();

            services.AddType <IInternalLogger, ConsoleLogger>();

            Action <ComponentOptions> componentOptions = component =>
            {
                component.AddLineProtocolCollector(options =>
                {
                    options.Server   = "http://localhost:8186";
                    options.Database = "aspectcore_apm";
                });
                component.AddApplicationProfiler(op => op.Interval = 1);
            };

            Action <ApplicationOptions> applicationOptions = options =>
            {
                options.ApplicationName = typeof(Program).Assembly.GetName().Name;
                options.Environment     = "Development";
            };

            services.AddAspectCoreAPM(componentOptions, applicationOptions);

            var serviceResolver = services.Build();

            var collectorLifetime = serviceResolver.Resolve <IComponentLifetime>();

            collectorLifetime.Start();

            Console.ReadKey();

            collectorLifetime.Stop();
        }
Ejemplo n.º 7
0
        public Test()
        {
            ioc = new ServiceDefintions()
                  .AddSingleton <IInterceptorConfiguration>(i =>
            {
                var c = new InterceptorConfiguration();
                //c.Interceptors.Add(new TestInterceptor());
                return(c);
            })
                  .AddTransient <IInterceptorConfigurationHandler>(i =>
            {
                return(new InterceptorAttributeConfigurationHandler(null));
            })
                  .AddTransient <IInterceptorCreatorFactory, InterceptorCreatorFactory>()
                  .AddSingleton <IInterceptDelegateBuilder>(i =>
            {
                return(i.GetRequiredService <IInterceptorCreatorFactory>().Build());
            })
                  .AddTransient <ISyncFunc, SyncFunc>()
                  .AddTransient <ISyncFunc2, SyncFunc2>()
                  .BuildServiceProvider();

            real = ioc.GetRequiredService <ISyncFunc2>();
            real.SyncCallNoParameters();
            proxy = ioc.GetRequiredService <ISyncFunc>();
            proxy.SyncCallNoParameters();

            var containerBuilder = new ServiceContainer();

            aspectcoreIoc = containerBuilder.AddType <ISyncFunc2, SyncFunc2>(AspectCore.Injector.Lifetime.Transient)
                            .Build();
            aspectcoreProxy = aspectcoreIoc.GetRequiredService <ISyncFunc2>();
            aspectcoreProxy.SyncCallNoParameters();
        }
Ejemplo n.º 8
0
        public Benckmarks()
        {
            var containerBuilder = new ContainerBuilder();

            containerBuilder.RegisterType <Logger>().As <ILogger>().InstancePerDependency();
            containerBuilder.RegisterType <TaskService>().As <ITaskService>().InstancePerDependency();
            containerBuilder.RegisterType <SampleRepository>().As <ISampleRepository>().InstancePerDependency().PropertiesAutowired();
            containerBuilder.RegisterType <SampleService2>().As <ISampleService>().InstancePerDependency();
            container = containerBuilder.Build();

            var serviceContainer = new ServiceContainer();

            serviceContainer.AddType <ILogger, Logger>(Lifetime.Transient);
            serviceContainer.AddType <ITaskService, TaskService>(Lifetime.Transient);
            serviceContainer.AddType <ISampleRepository, SampleRepository>(Lifetime.Transient);
            serviceContainer.AddType <ISampleService, SampleService2>(Lifetime.Transient);
            serviceResolver = serviceContainer.Build();
        }
Ejemplo n.º 9
0
        static IServiceResolver ContainerBuild()
        {
            IServiceContainer serviceContainer1 = new ServiceContainer();

            serviceContainer1.AddAspectScope();
            serviceContainer1.AddType <ILogger, ConsoleLogger>();

            return(serviceContainer1.Build());
        }
Ejemplo n.º 10
0
        static void Main1(string[] args)
        {
            IServiceContainer serviceContainer = new ServiceContainer();

            serviceContainer.AddAspectScope();
            serviceContainer.AddType <IA, A>();
            serviceContainer.AddType <IB, B>();
            serviceContainer.AddType <IC, C>();
            var r = serviceContainer.Build();

            Task.WaitAll(
                Task.Run(() => { r.CreateScope().Resolve <IA>().None(); }),
                Task.Run(() => { r.CreateScope().Resolve <IB>().None(); }),
                Task.Run(() => { r.CreateScope().Resolve <IC>().None(); }),
                Task.Run(() => { r.CreateScope().Resolve <IA>().Nested(); }),
                Task.Run(() => { r.CreateScope().Resolve <IB>().Nested(); }),
                Task.Run(() => { r.CreateScope().Resolve <IC>().Nested(); }),
                Task.Run(() => { r.CreateScope().Resolve <IA>().Aspect(); }),
                Task.Run(() => { r.CreateScope().Resolve <IB>().Aspect(); }),
                Task.Run(() => { r.CreateScope().Resolve <IC>().Aspect(); }));

            IServiceContainer serviceContainer1 = new ServiceContainer();

            serviceContainer1.AddAspectScope();
            serviceContainer1.AddType <IA, A>();
            serviceContainer1.AddType <IB, B>();
            serviceContainer1.AddType <IC, C>();

            Console.WriteLine();

            var r1 = serviceContainer1.Build();

            r1.Resolve <IA>().None();
            r1.Resolve <IB>().None();
            r1.Resolve <IC>().None();
            r1.Resolve <IA>().Nested();
            r1.Resolve <IB>().Nested();
            r1.Resolve <IC>().Nested();
            r1.Resolve <IA>().Aspect();
            r1.Resolve <IB>().Aspect();
            r1.Resolve <IC>().Aspect();

            Console.ReadKey();
        }
Ejemplo n.º 11
0
        public void Interface_Proxy()
        {
            var serviceContainer = new ServiceContainer();

            serviceContainer.AddType <IProxyTransient, ProxyTransient>();
            var resolver = serviceContainer.Build();

            var transient = resolver.Resolve <IProxyTransient>();

            Assert.True(transient.IsProxy());
        }
        public void ImplementationMethodFromInjector_Test()
        {
            var container = new ServiceContainer();

            container.AddType <IService, Service>();
            var resolver = container.Build();
            var service  = resolver.Resolve <IService>();
            var val      = service.GetValue("le");

            Assert.Equal("lemon", val);
        }
Ejemplo n.º 13
0
        static void Main(string[] args)
        {
            IServiceContainer serviceContainer = new ServiceContainer();

            serviceContainer.AddAspectScope();
            serviceContainer.AddType <IA, A>();
            serviceContainer.AddType <IB, B>();
            serviceContainer.AddType <IC, C>();

            var r = serviceContainer.Build();

            r.Resolve <IA>().None();
            r.Resolve <IB>().None();
            r.Resolve <IC>().None();
            r.Resolve <IA>().Nested();
            r.Resolve <IB>().Nested();
            r.Resolve <IC>().Nested();
            r.Resolve <IA>().Aspect();
            r.Resolve <IB>().Aspect();
            r.Resolve <IC>().Aspect();
            Console.ReadKey();
        }
Ejemplo n.º 14
0
        public static void Main()
        {
            IServiceContainer services = new ServiceContainer();

            services.AddType <ICanService, PeopleService>();

            services.Configure(configure => {
                configure.Interceptors.Add(new CustomInterceptorFactory());
            });

            var serviceResolver = services.Build();
            var service         = (ICanService)serviceResolver.GetService(typeof(ICanService));

            service.CanSayHello("测试");
        }
        public void LoadBinding()
        {
            var dict = new Dictionary <string, string>
            {
                { "creator:age", "24" },
                { "creator:name", "lemon" }
            };
            var builder = new ConfigurationBuilder().AddEnvironmentVariables();

            builder.AddInMemoryCollection(dict);
            var configuration = builder.Build();
            var container     = new ServiceContainer();

            container.AddInstance <IConfiguration>(configuration);
            container.AddConfigurationInject();
            container.AddType <BindConfigService>();
            var service = container.Build().Resolve <BindConfigService>();

            Assert.Equal(service.ToString(), "lemon-24");
        }