温莎城堡:从一个装配自动注册类型从另一个实现接口 [英] Castle Windsor: Auto-register types from one assembly that implement interfaces from another

查看:193
本文介绍了温莎城堡:从一个装配自动注册类型从另一个实现接口的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用温莎城堡作为我的 IoC容器。我也有类似以下内容的结构的应用程序:

I use Castle Windsor as my IoC container. I have an application that has a structure similar to the following:


  • MyApp.Services.dll

    • IEmployeeService

    • IContractHoursService

    • ...

    • MyApp.Services.dll
      • IEmployeeService
      • IContractHoursService
      • ...

      • 的EmployeeService:MyApp.Services.IEmployeeService

      • ContractHoursService :MyApp.Services.IContractHoursService

      • ...

      • EmployeeService : MyApp.Services.IEmployeeService
      • ContractHoursService : MyApp.Services.IContractHoursService
      • ...

      我使用的XML配置,而且,我有一个新的组件添加到XML配置文件。我想改用这一切都转移到流利的注册API 但还没有制定出的究竟的正途做我想做呢。

      I use the XML configuration at the moment, and every time I add a new IService/Service pair, I have to add a new component to the XML configuration file. I want to switch all this over to the fluent registration API but haven't worked out exactly the right recipe to do what I want yet.

      谁能帮助?生活方式都将是

      Can anyone help? The lifestyles will all be singleton.

      在预先感谢。

      推荐答案

      通过 AllTypes 您可以轻松地做到这一点:

      With AllTypes you can easily do this:

      通过 http://stw.castleproject.org/(S( nppam045y0sdncmbazr1ob55))/ Windsor.Registering成分逐conventions.ashx :在

      注册组件一个接一个也可以非常重复性的工作。还记得注册的每个新型添加可迅速导致挫折。幸运的是,你不必这样做,至少始终。通过使用AllTypes入门级可以执行的根据您指定的某些特定类型特征组注册。

      Registering components one-by-one can be very repetitive job. Also remembering to register each new type you add can quickly lead to frustration. Fortunately, you don't have to do it, at least always. By using AllTypes entry class you can perform group registration of types based on some specified characteristics you specify.

      我觉得你的注册会是什么样子

      I think your registration would look like:

      AllTypes.FromAssembly(typeof(EmployeeService).Assembly)
          .BasedOn<IEmployeeService>()
          .LifeStyle.Singleton
      

      如果您实现一个基本类型,如 IService 在你的界面,您可以同时使用下面的结构他们都注册:

      If you implement a base type, like IService on your interfaces, you can register them all at once using the following construct:

      AllTypes.FromAssembly(typeof(EmployeeService).Assembly)
          .BasedOn<IService>()
          .WithService.FromInterface()
          .LifeStyle.Singleton
      

      有关更多示例,请参阅文章。这对可能性是什么一个很好的说明。

      For more examples, see the article. This has a very good description on what the possibilities are.

      这篇关于温莎城堡:从一个装配自动注册类型从另一个实现接口的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆