Надеюсь, название имеет хоть какой-то смысл.
У меня ситуация как в коде ниже. Тест проходит, но я хотел бы зарегистрироваться
GenericCommandHandler<>
как открытый универсальный тип как реализация для
IHandler<GenericCommand<>>
Я могу жить с вещью ниже, потому что количество типов, данных GenericCommandHandler, ограничено, и я могу зарегистрировать их все по отдельности, но хотел бы что-то более «автоматизированное».
using Castle.MicroKernel.Registration;
using Castle.Windsor;
using NUnit.Framework;
[TestFixture]
public class Class1
{
[Test]
public void t()
{
using( var container = new WindsorContainer() )
{
// HOW TO REGISTER IT AS OPEN GENERIC TYPE?
container.Register(
Component.For<IHandler<GenericCommand<object>>>()
.ImplementedBy<GenericCommandHandler<object>>() );
var handler = container.Resolve<IHandler<GenericCommand<object>>>( );
}
}
}
public interface IHandler<TCommand>
{
void Handle(TCommand o);
}
public class GenericCommand<T>
{
}
public class GenericCommandHandler<T> : IHandler<GenericCommand<T>>
{
public void Handle( GenericCommand<T> o )
{
}
}