温莎城堡如何响应实现多个接口的类?

2023-11-28

例如,我有两个接口:ICustomerService 和 IOrderService,每个接口都有几个函数,例如 GetCustomer、GetOrder 等。

我想要一个类来实现这两个接口:Server.

温莎城堡对此有何回应? 首先有可能吗? 当我根据两个接口之一解析服务器对象时,我会得到相同的对象吗? 当我的构造函数的参数中包含两个接口时,会发生什么情况?还会有一个物体被构造出来吗?

假设 LifeStyle 保留默认值:Singleton。


CLR 类型和 Windsor 服务或组件之间不存在硬性的一对一映射(如果需要的话,术语表在这里).

因此,您可能会出现以下任何一种情况:

  • 许多具有不同实现类型的组件公开一个服务

    container.Register(
       Component.For<IFoo>().ImplementedBy<Foo1>(),
       Component.For<IFoo>().ImplementedBy<Foo2>()
    );
    
  • 许多具有相同实现类型的组件公开一个服务

    container.Register(
       Component.For<IFoo>().ImplementedBy<Foo1>(),
       Component.For<IFoo>().ImplementedBy<Foo1>().Named("second")
    );
    
  • 许多具有相同实现类型的组件公开不同的服务

    container.Register(
       Component.For<IFoo>().ImplementedBy<Foo1>(),
       Component.For<IBar>().ImplementedBy<Foo1>().Named("second")
    );
    
  • 单个组件公开不同的服务

    container.Register(
       Component.For<IFoo, Bar>().ImplementedBy<Foo1>()
    );
    

正如您所看到的,是的 - 这是可能的,并且您是否会获得相同的实例(假设单例)取决于您选择的选项 - 两个服务是否将由同一个组件公开。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

温莎城堡如何响应实现多个接口的类? 的相关文章

随机推荐