ウィンザーに登録してください。オープン・ジェネリック・タイプのジェネリック・サービスのためのオープン・ジェネリック・タイプ・コンポーネント
私は以下のような状況があります。テストは合格、私は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