1つまたは2つのインターフェイス(IHandleMessages<>および/またはCommandExecutor<>)を実装するエグゼキュータクラスがいくつかあります。
これらすべてのエグゼキュータクラス(2つのうち実装するインターフェイス)をサービスとして登録できますか?クラス上の他のすべてのインターフェースもサービスとして使用することになりません。
私の最初の試みはこれでした:
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> { }
}
しかし、それは機能しません。これに対する解決策はありますか?
Windsor3.1.0を使用しています。
編集:私が本当に求めているのは、同じタイプを2回見つけて、そのタイプの登録にさらにサービスを追加することは可能ですか?