我有一些执行器类实现了一个或两个接口(IHandleMessages<> 和/或 CommandExecutor<>)。
我可以将所有这些执行程序类(使用它实现的两个接口中的任何一个或多个)注册为服务吗?最终不会将类上的所有其他接口也作为服务。
我最初的尝试是这样的:
public class Test
{
[Fact]
public void SomeTest()
{
var container = new WindsorContainer();
container.Register(Classes.FromThisAssembly().BasedOn(typeof(CommandExecutor<>)).WithService.Base().LifestyleTransient(),
Classes.FromThisAssembly().BasedOn(typeof(IHandleMessages<>)).WithService.Base().LifestyleTransient());
container.ResolveAll<CommandExecutor<object>>().Count().ShouldBe(2);
container.ResolveAll<IHandleMessages<object>>().Count().ShouldBe(2);
}
public interface IHandleMessages<T> { }
public interface CommandExecutor<T> { }
public class HandlesMessagesOnly : IHandleMessages<object> { }
public class HandlesMessagesAndExecutesCommands : CommandExecutor<object>, IHandleMessages<object> { }
public class ExecutesCommandsOnly : CommandExecutor<object> { }
}
但这不起作用。有解决方案吗?
我正在使用温莎 3.1.0。
编辑:我想我真正要问的是:是否可以两次找到相同的类型,然后让发现者在该类型的注册中添加更多服务?