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通过选择器。如果我注册了专门用于多重消息的所有类型,那么这一切都会起作用。但这打破了我的传统配置,并迫使保留此代码的人员在实现新消息类型时更改服务安装程序。