Vb.net Castle Windsor-解析时的默认接口
我最近才开始使用Castle Windsor,有个问题 假设我有一个接口——IService——我有五个实现它的类(IServiceOne、IServicewo、IServiceThree)等等 从那里我有了实现每个iSeries设备的类。它们被恰当地命名为ServiceOneProvider、ServiceTwoProvider、ServiceThreeProvider等。在这些类中,我正在解析IService对象 所以我想知道的是——是否有可能使用DefaultInterfaces的等价物(可以在注册期间使用)解析IService对象,这样ServiceOneProvider将获得ServiceOne对象,ServiceTwoProvider将获得ServiceTwo对象等等 谢谢Vb.net Castle Windsor-解析时的默认接口,vb.net,dependencies,castle-windsor,code-injection,castle,Vb.net,Dependencies,Castle Windsor,Code Injection,Castle,我最近才开始使用Castle Windsor,有个问题 假设我有一个接口——IService——我有五个实现它的类(IServiceOne、IServicewo、IServiceThree)等等 从那里我有了实现每个iSeries设备的类。它们被恰当地命名为ServiceOneProvider、ServiceTwoProvider、ServiceThreeProvider等。在这些类中,我正在解析IService对象 所以我想知道的是——是否有可能使用DefaultInterfaces的等价物(
-罗斯我没有看到温莎内置的任何东西可以做这样的事情。我想使用HandlerSelector,但是当选择器运行时,您不知道请求依赖项的类型,因此这没有帮助 你可以用这个。只需创建一个接口以返回iSeries对象(C版本): 然后将您的iSeries实例命名为“ServiceOne”、“ServiceTwo”等
public interface IProviderFactory
{
IService GetServiceOne();
IService GetServiceTwo();
IService GetServiceThree();
}
Component.For<IService>().ImplementedBy<ServiceOne>().Named("ServiceOne"),
Component.For<IService>().ImplementedBy<ServiceTwo>().Named("ServiceTwo"),
Component.For<IService>().ImplementedBy<ServiceThree>().Named("ServiceThree"),
public class ServiceOneProvider
{
public ServiceOneProvider(IProviderFactory factory)
{
var service = factory.GetServiceOne();
}
}
public class ServiceTwoProvider
{
public ServiceTwoProvider(IProviderFactory factory)
{
var service = factory.GetServiceTwo();
}
}
public class ServiceThreeProvider
{
public ServiceThreeProvider(IProviderFactory factory)
{
var service = factory.GetServiceThree();
}
}