Hi there,
I’ve an existing MVC application using Ninject. Currently we are using Command/CommandHandler pattern to resolve dependencies. With Ninject, I can bind/register all my CommandHandlers using convention like:
Bind -> FromAssemblyContaining -> SelectAllClasses -> InderitedFrom -> (typeof(ICommandHandler<>))…
With the convention I don’t need to manually register every single command handler.
Is there a way to achieve this using Funq? I could utilize Funq’s container adapter and still use Ninject but I’d love to just use Funq and stay as much closer to ServiceStack’s way of doing things.
Any suggestions/ ideas would be awesome
Thanks!
Kebin
Hi Kebin, you can traverse the assembly and register all matching types with:
GetType().Assembly.GetTypes()
.Where(x => x.IsOrHasGenericInterfaceTypeOf(typeof(ICommandHandler<>)))
.Each(x => container.RegisterAutoWiredType(x));
I’ve created a unit test that shows an example of this at:
https://github.com/ServiceStack/ServiceStack/commit/f0d319b5dcf0275cc04fbc00e4741a24c0e15baf
Kebin Maharjan:
Awesome! Thanks Demis