Which version are you using? On 15/06/2011 5:32 PM, PaulBowman wrote:
Hi All.Can anybody explain why Windsor will not resolve the component. using System; using System.Collections.Generic; using Castle.Windsor; using Castle.MicroKernel.Registration; namespace WindsorIOCProblem { class Program { static void Main(string[] args) { IWindsorContainer container = new WindsorContainer(); container.Register(Component.For<IEventHandler<SomethingCreatedEvent>>().ImplementedBy<CreateSomethingEventHandler>()); var publisher = new Publisher(container); // This works var created = new SomethingCreatedEvent(); publisher.Publish(created); // This does not. var list = new List<IEvent>() { new SomethingCreatedEvent() }; foreach (var e in list) publisher.Publish(e); } } public interface IEvent { } public class SomethingCreatedEvent : IEvent { } public interface IEventHandler<T> where T : IEvent { void Handle(IEvent @event); } public class CreateSomethingEventHandler : IEventHandler<SomethingCreatedEvent> { void IEventHandler<SomethingCreatedEvent>.Handle(IEvent @event) { Console.WriteLine(this.GetType().Name); } } public class Publisher { public Publisher(IWindsorContainer container) { _container = container; } public void Publish<T>(T @event) where T : IEvent { var handler = _container.Resolve<IEventHandler<T>>(); handler.Handle(@event); } private IWindsorContainer _container; } } In the code example I give (which should run with a reference to Windsor). If I call Publisher.Publish with the explicit type Windsor can resolve the component. However if I use the second method (which is what to do). Windsor will not resolve the component and throws an exception telling me it cannot find a service supporting IEvent. I can understand why Windsor cannot find a service implementing IEvent. My question is how can I Windsor to resolve correctly? Thanks Paul
-- You received this message because you are subscribed to the Google Groups "Castle Project Users" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/castle-project-users?hl=en.
