【发布时间】:2009-11-04 21:47:09
【问题描述】:
我正在尝试注册 IRequestHandler1[GenericTestRequest1[T]] 之类的类型,该类型将由 GenericTestRequestHandler`1[T] 实现,但我目前从 Windsor 收到错误“Castle.MicroKernel.ComponentNotFoundException : No component for支持服务“是否支持这种类型的操作?或者它是否远离支持的寄存器( Component.For(typeof( IList).ImplementedBy( typeof( List ) ) )
以下是破坏测试的示例。 ///////////////////////////////////////// ////
public interface IRequestHandler{}
public interface IRequestHandler<TRequest> : IRequestHandler where TRequest : Request{}
public class GenericTestRequest<T> : Request{}
public class GenericTestRequestHandler<T> : RequestHandler<GenericTestRequest<T>>{}
[TestFixture]
public class ComponentRegistrationTests{
[Test]
public void DoNotAutoRegisterGenericRequestHandler(){
var IOC = new Castle.Windsor.WindsorContainer();
var type = typeof( IRequestHandler<> ).MakeGenericType( typeof( GenericTestRequest<> ) );
IOC.Register( Component.For( type ).ImplementedBy( typeof( GenericTestRequestHandler<> ) ) );
var requestHandler = IoC.Container.Resolve( typeof(IRequestHandler<GenericTestRequest<String>>));
Assert.IsInstanceOf <IRequestHandler<GenericTestRequest<String>>>( requestHandler );
Assert.IsNotNull( requestHandler );
}
}
【问题讨论】:
标签: .net inversion-of-control castle-windsor ioc-container