Надеюсь, что название имеет хоть какой-то смысл.Зарегистрируйте в Виндзоре открытый общий тип компонента для общего обслуживания открытого типа типа
У меня была ситуация, как в коде ниже. Тест проходит, но я хотел бы зарегистрировать
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)
{
}
}
Теперь я вспоминаю чтение вашей статьи и Джимми Миллера. Спасибо, это должно сработать. – Artur