我希望標題至少有一定意義。在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