/// <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; }
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); } }
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(); }
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); } } }
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); } }
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); } }
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"]))); }
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>(); }
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)); }
private void Prepare(WindsorResolver r) { var windsor = r.Container; Util.Resolve(r); }
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()); }
private void Prepare(WindsorResolver r) { var windsor = r.Container; Util.Resolve(r); }
private void ParpareExtend(WindsorResolver r) { }
private void ParpareExtend(WindsorResolver r) { }
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)); }
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); }
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(); }