Castle Windsor - 开放通用接口的IoC注册?

gol*_*ger 35 .net c# castle-windsor ioc-container inversion-of-control

Castle Windsor是否允许注册开放的通用接口,还是需要单独注册每个可能的类型实例?

示例 - 下面的类型为T,Z在编译时失败,除非我单独指定强类型的T,Z.

 container.Register(Component
      .For<IAdapterFactory<T,Z>>()
      .ImplementedBy<AdapterFactory<T,Z>>()
      .LifeStyle.PerWebRequest);
Run Code Online (Sandbox Code Playgroud)

Krz*_*mic 71

它被称为开放式通用,是的,Windsor确实支持它.

 container.Register(Component
             .For(typeof(IAdapterFactory<,>))
             .ImplementedBy(typeof(AdapterFactory<,>))
             .LifestylePerWebRequest());
Run Code Online (Sandbox Code Playgroud)

  • 这是唯一可以在此场景中使用的语法,它与Windsor有关.这就是你如何获得表示开放泛型类型的`System.Type`实例. (11认同)