C# Castle Windsor-从同一服务注册泛型和非泛型类型

C# Castle Windsor-从同一服务注册泛型和非泛型类型,c#,castle-windsor,C#,Castle Windsor,我有以下结构 public SomeMessage : IServiceMessage { } public MultipleMessage<T> : IServiceMessage where T : IServiceMessage { } publicsomemessage:IServiceMessage { } 公共多重消息:IServiceMessage 其中T:IServiceMessage { } 目前,我正在使用以下注册方式注册所有非通用消息类型(如我首先

我有以下结构

public SomeMessage : IServiceMessage
{
}

public MultipleMessage<T> : IServiceMessage
    where T : IServiceMessage
{
}
publicsomemessage:IServiceMessage
{
}
公共多重消息:IServiceMessage
其中T:IServiceMessage
{
}
目前,我正在使用以下注册方式注册所有非通用消息类型(如我首先给出的示例):

container.Register(
    Types.FromAssemblyContaining<IServiceMessage>()
            .BasedOn<IServiceMessage>()
            .WithService.FromInterface()
            .LifestyleTransient());
container.Register(
Types.FromAssemblyContaining()
.BasedOn()
.WithService.FromInterface()
.生活方式(暂时的);
但是,这不会注册通用多重消息,因此我将注册所有可能的多重消息,如下所示:

container.Register(
    Component.For<IServiceMessage>()
                .ImplementedBy<MultipleMessage<SomeMessage>>()
                .LifeStyle.Transient);
container.Register(
用于()的组件
.由()实施
(生活方式,短暂),;

但这似乎是错误的,因为我对非泛型类型使用约定,而对泛型类型使用配置。有没有办法为所有可能的泛型类型注册多重消息?

如果您向Windsor询问所有
IServiceMessage
实现,您希望它能为您提供什么?它如何知道要应用于多消息的类型参数?我有一个TypedFactoryFacility通过选择器。如果我注册了专门用于多重消息的所有类型,那么这一切都会起作用。但这打破了我的传统配置,并迫使保留此代码的人员在实现新消息类型时更改服务安装程序。