コード例 #1
0
        static void Main(string[] args)
        {
            var serviceContext = new ServiceContext();

            serviceContext.AddType <ITaskService, TaskService>();

            var containerBuilder = new ContainerBuilder();

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

            var configuration = serviceContext.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();
        }
コード例 #2
0
        /// <summary>
        /// Inits the contrainer.
        /// </summary>
        /// <returns>An IServiceContext.</returns>
        public static IServiceContext InitContrainer()
        {
            var container = new ServiceContext();

            container.AddType <DbDatabase, MySqlDbDatabase>(Lifetime.Scoped);
            container.AddType <DbData, MySqlDbData>(Lifetime.Scoped);
            container.AddType <DbTable, MySqlDbTable>(Lifetime.Scoped);
            container.AddType <DbIndex, MySqlDbIndex>(Lifetime.Scoped);
            container.AddType <DbColumns, MySqlDbColumns>(Lifetime.Scoped);
            container.AddType <IDbProvider, MySqlDbProvider>(Lifetime.Scoped);
            container.AddType <DbOption, MySqlOption>(Lifetime.Scoped);
            container.AddType <ISqlBuilder, MySqlSqlBuilder>(Lifetime.Scoped);
            container.AddType <TransactionManager, MySqlTransactionManager>(Lifetime.Scoped);
            container.AddType <DbContext, MySqlDbContext>();
            return(container);
        }
        public void ImplementationMethodFromInjector_Test()
        {
            var container = new ServiceContext();

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

            Assert.Equal("lemon", val);
        }
        public void Interface_Proxy()
        {
            var serviceContainer = new ServiceContext();

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

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

            Assert.True(transient.IsProxy());
        }
コード例 #5
0
        public void Resolve_OptionalDependencyDoesNotExists()
        {
            var serviceContext = new ServiceContext();

            serviceContext
            .AddType <Dependency>()
            .AddType <Service>();

            var container = serviceContext.Build();
            var service   = container.Resolve <Service>();

            Assert.True(service.HasDependency);
            Assert.False(service.HasOptionalDependency);
        }
コード例 #6
0
        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 ServiceContext();

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

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