/// <summary>配置默认的Castle容器
        /// <remarks>默认使用XmlInterpreter初始化</remarks>
        /// </summary>
        /// <param name="configuration"></param>
        /// <param name="func">执行额外的配置</param>
        /// <returns></returns>
        public static Configuration Castle(this Configuration configuration, Action<WindsorResolver> func)
        {
            var container = new WindsorContainer();
            //从配置文件初始化
            container.Install(new ConfigurationInstaller(new XmlInterpreter()));

            var resolver = new WindsorResolver(container);
            //设置解释器实例
            configuration.Resolver(resolver);

            //强制注册Log4Net日志工厂+增加注入运行时变量 20111130
            resolver.Container.Log4NetLoggerFactory(
                () => configuration.RuntimeProperties(Configuration.RuntimeProperties_Environment)
                , () => configuration.RuntimeProperties(Configuration.RuntimeProperties_Environment_Error));
            //强制设置Common.Logging使用Log4Net实现且使用外部配置的log4net实例 EXTERNAL
            Common.Logging.LogManager.Adapter = new Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter(new NameValueCollection() { { "configType", "EXTERNAL" } });

            //记录启动信息
            var log = DependencyResolver
                .Resolve<ILoggerFactory>()
                .Create(typeof(ConfigurationExtensions));
            log.Info("不启用NamingSubSystem=NamingSubsystemForDefaultComponent,Castle升级至3.0后无需此子系统");
            log.Info("强制使用Log4Net日志工厂");
            log.Info("强制设置Common.Logging使用Common.Logging.Log4Net实现");
            log.Debug("来自Configuration的在日志组件未初始化前的调试信息:\n" + configuration.PopMessages());

            //额外的容器配置
            func(resolver);

            return configuration;
        }
Exemplo n.º 2
0
 public static void Resolve(WindsorResolver r)
 {
     var windsor = r.Container;
     //注册EventBus
     windsor.RegisterComponent(typeof(EventBus));
     //注册人工节点超时升级与外围的集成实现
     windsor.RegisterComponent(typeof(HumanEscalationHelper));
     //注册子流程与外围的集成实现
     windsor.RegisterComponent(typeof(SubProcessHelper));
 }
        public void WindsorResolver_DoesNot_Resolve_NonRegistered_ContactRepository_Test()
        {
            using (var container = new WindsorContainer())
            {
                var resolver = new WindsorResolver(container);
                var instance = resolver.GetService(typeof (IContactRepository));

                Assert.IsNull(instance);
            }
        }
Exemplo n.º 4
0
        public void WindsorResolver_DoesNot_Resolve_NonRegistered_ContactRepository_Test()
        {
            using (var container = new WindsorContainer())
            {
                var resolver = new WindsorResolver(container);
                var instance = resolver.GetService(typeof(IContactRepository));

                Assert.IsNull(instance);
            }
        }
        public CriminalApplication()
        {
            this.repositoryCriminal = WindsorResolver <ICriminalRepository> .Resolve();

            this.serviceCriminal = WindsorResolver <ICriminalService> .Resolve();

            this.repositoryCountry = WindsorResolver <ICountryRepository> .Resolve();

            this.repositorySexType = WindsorResolver <ISexTypeRepository> .Resolve();
        }
Exemplo n.º 6
0
        public static void Resolve(WindsorResolver r)
        {
            var windsor = r.Container;

            //注册EventBus
            windsor.RegisterComponent(typeof(EventBus));
            //注册人工节点超时升级与外围的集成实现
            windsor.RegisterComponent(typeof(HumanEscalationHelper));
            //注册子流程与外围的集成实现
            windsor.RegisterComponent(typeof(SubProcessHelper));
        }
 public ApplicationBase()
 {
     foreach (PropertyInfo propriedade in this.GetType().GetProperties())
     {
         if (propriedade.Name.ToUpper().Contains("REPOSITORIO") || propriedade.Name.ToUpper().Contains("SERVICE"))
         {
             Type   tipo = propriedade.PropertyType;
             object obj  = WindsorResolver.CreateInstance(tipo);
             propriedade.SetValue(this, obj);
         }
     }
 }
Exemplo n.º 8
0
 private void Prepare(WindsorResolver r)
 {
     var windsor = r.Container;
     Util.Resolve(r);
     //注册调度器
     windsor.Register(Component
         .For<Taobao.Workflow.Activities.Hosting.IScheduler>()
         .Instance(new Taobao.Workflow.Activities.Hosting.Scheduler(windsor.Resolve<ILoggerFactory>()
             , System.Configuration.ConfigurationManager.AppSettings["SchedulerId"]
             , SystemConfig.Settings["interval"]
             , SystemConfig.Settings["perChargeCount"])));
 }
        public void WindsorResolver_Resolves_Registered_ContactRepository_Test()
        {
            using (var container = new WindsorContainer())
            {
                container.Register(
                    Component.For<IContactRepository>().Instance(new InMemoryContactRepository()));

                var resolver = new WindsorResolver(container);
                var instance = resolver.GetService(typeof (IContactRepository));

                Assert.IsNotNull(instance);
            }
        }
Exemplo n.º 10
0
        public void WindsorResolver_Resolves_Registered_ContactRepository_Test()
        {
            using (var container = new WindsorContainer())
            {
                container.Register(
                    Component.For <IContactRepository>().Instance(new InMemoryContactRepository()));

                var resolver = new WindsorResolver(container);
                var instance = resolver.GetService(typeof(IContactRepository));

                Assert.IsNotNull(instance);
            }
        }
Exemplo n.º 11
0
        private void Prepare(WindsorResolver r)
        {
            var windsor = r.Container;

            Util.Resolve(r);
            //注册调度器
            windsor.Register(Component
                             .For <Taobao.Workflow.Activities.Hosting.IScheduler>()
                             .Instance(new Taobao.Workflow.Activities.Hosting.Scheduler(windsor.Resolve <ILoggerFactory>()
                                                                                        , System.Configuration.ConfigurationManager.AppSettings["SchedulerId"]
                                                                                        , SystemConfig.Settings["interval"]
                                                                                        , SystemConfig.Settings["perChargeCount"])));
        }
Exemplo n.º 12
0
        private static void PrepareBaseDependency(SystemConfigWithCastle config, WindsorResolver resolver)
        {
            //基础服务使用全局容器
            var windsor = resolver.Container;

            //注册工厂支持
            //windsor.AddFacility<Castle.Facilities.FactorySupport.FactorySupportFacility>();
            //注册基本拦截器
            windsor.Register(Component.For <ServiceInterceptor>().LifeStyle.Transient);
            //不可使用此方式会引起对象正常依赖行为
            //windsor.RegisterFromInterface(typeof(ServiceInterceptor));
            //注册Configure中完成无容器的默认依赖
            config.ExceptionSystem <DefaultExceptionSystem>();
        }
Exemplo n.º 13
0
        private void Prepare(WindsorResolver r)
        {
            var windsor = r.Container;

            this.ParpareExtend(r);
            //Cooper模型相关
            windsor.RegisterRepositories(Assembly.Load("Cooper.Repositories"));
            windsor.RegisterServices(Assembly.Load("Cooper.Model"));
            windsor.RegisterComponent(Assembly.Load("Cooper.Model"));
            //Controller注入
            windsor.ControllerFactory();
            windsor.RegisterControllers(Assembly.GetExecutingAssembly());
            //注册web上下文
            windsor.RegisterComponent(typeof(Cooper.Web.Controllers.WebContextService));
            //注册Fetch扩展
            windsor.RegisterComponent(typeof(Cooper.Web.Controllers.FetchTaskHelper));
        }
Exemplo n.º 14
0
        private void Prepare(WindsorResolver r)
        {
            var windsor = r.Container;

            Util.Resolve(r);
        }
Exemplo n.º 15
0
        private static void PrepareBase(SystemConfig config, WindsorResolver resolver, params Assembly[] assemblies)
        {
            //基础服务使用全局容器
            var windsor = resolver.Container;
            //注册工厂支持
            windsor.AddFacility<Castle.Facilities.FactorySupport.FactorySupportFacility>();
            //基础库注册
            //将web上下文服务注册为默认的上下文服务,HACK:由于过早提供该类,导致无法默认使用threadcontext
            //config.ContextService<WebContextService>();
            //默认的异常体系声明
            windsor.Register(Component
                .For<IExceptionSystem>()
                .UsingFactoryMethod(o => config._exceptionSystem)
                .LifeStyle.Transient);
            //注册拦截器
            windsor.Register(Component.For<ServiceInterceptor>().LifeStyle.Transient);

            var list = new List<Assembly>();
            //基础程序集
            //list.Add(Assembly.Load("Taobao.Repositories"));
            //list.Add(Assembly.Load("Taobao.Application"));
            //list.Add(Assembly.Load("Taobao.Model"));
            if (assemblies != null) list.AddRange(assemblies);
            list = list.Distinct().ToList();
            //DDD支持
            windsor.RegisterRepositories(list.ToArray());
            windsor.RegisterServices(list.ToArray(), typeof(ServiceInterceptor));
            //自定义类型注册
            windsor.RegisterComponent(list.ToArray(), typeof(ServiceInterceptor));
            windsor.RegisterFromInterface(IsFactory, list.ToArray());
            windsor.RegisterFromInterface(IsDao, list.ToArray());
            windsor.RegisterFromInterface(IsSpecial, list.ToArray());
        }
Exemplo n.º 16
0
 private void Prepare(WindsorResolver r)
 {
     var windsor = r.Container;
     Util.Resolve(r);
 }
Exemplo n.º 17
0
 private void ParpareExtend(WindsorResolver r)
 {
 }
Exemplo n.º 18
0
 private void ParpareExtend(WindsorResolver r)
 {
 }
Exemplo n.º 19
0
 private void Prepare(WindsorResolver r)
 {
     var windsor = r.Container;
     this.ParpareExtend(r);
     //Cooper模型相关
     windsor.RegisterRepositories(Assembly.Load("Cooper.Repositories"));
     windsor.RegisterServices(Assembly.Load("Cooper.Model"));
     windsor.RegisterComponent(Assembly.Load("Cooper.Model"));
     //Controller注入
     windsor.ControllerFactory();
     windsor.RegisterControllers(Assembly.GetExecutingAssembly());
     //注册web上下文
     windsor.RegisterComponent(typeof(Cooper.Web.Controllers.WebContextService));
     //注册Fetch扩展
     windsor.RegisterComponent(typeof(Cooper.Web.Controllers.FetchTaskHelper));
 }
Exemplo n.º 20
0
 public void Application_Start(out IAccountService accountService, out IDocumentService bookService, out IUserService userService, out ILoanService loanService)
 {
     container = new WindsorContainer();
     WindsorInstaller.Install(container);
     WindsorResolver.ResolveDependencies(container, out accountService, out bookService, out userService, out loanService);
 }
Exemplo n.º 21
0
 private void ParpareExtend(WindsorResolver r)
 {
     var windsor = r.Container;
     //ALiCooper扩展
     //目前以http获取配置服务替代原有机制
     var api = CodeSharp.Framework.SystemConfig.Settings["ali_api_sysconfig"];
     using (var wc = new System.Net.WebClient() { Encoding = System.Text.Encoding.UTF8 })
         CodeSharp.Core.Configuration.Instance().ReadProperties(wc.DownloadString(api));
     windsor.RegisterRepositories(Assembly.Load("AliCooper.Repositories"));
     windsor.RegisterServices(Assembly.Load("AliCooper.Model"));
     windsor.RegisterComponent(Assembly.Load("AliCooper.Model"));
     windsor.RegisterComponent(typeof(Cooper.Web.AliExtensions.FetchTaskHelper));
     windsor.RegisterComponent(typeof(Cooper.Web.AliExtensions.UserHelper));
     windsor.RegisterController<Cooper.Web.AliExtensions.AccountController>();
     windsor.RegisterController<Cooper.Web.AliExtensions.TeamController>();
     //连接到SC
     //var uri = CodeSharp.Framework.SystemConfig.Settings["serviceCenterNodeUri"];
     //CodeSharp.ServiceFramework.Configuration
     //    .Configure()
     //    .Castle(windsor)
     //    .Associate(new Uri(uri))
     //    .Log4Net(false)
     //    .Endpoint()
     //    .Run();
 }