我想註冊一個類似IRequestHandler的類型[T]]將由GenericTestRequestHandler`1 [T]實現,但我目前從溫莎得到一個錯誤「城堡.MicroKernel.ComponentNotFoundException:沒有用於支持服務的組件「是否支持此類操作?或者,它是從扶持產品寄存器(Component.For(typeof運算(IList的相去甚遠<>)。ImplementedBy(typeof運算(列表<>)))解決在溫莎城堡通用參數通用
下面是斷裂試驗的一個例子。 //// //////////////////////////////////////////////////
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);
}
}
毛是死了。 +1票 – eduncan911 2009-11-05 02:41:33