我希望标题至少有一定意义。在Windsor注册一个开放的泛型类型组件,用于开放泛型类型的通用服务
我有如下代码的情况。测试通过,但我想注册
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 2011-01-14 15:59:04