Getting started with Dependency Injection is easier than you think
So I was reading Kevin Obee (@KevinObee) write about Dependency Injection, and how many of you out there wasn’t using it yet. While the post that inspired me addresses Webforms implementations, I also find this lacking in many MVC solutions I come across.
Further; most of the examples you find on the web now – setting up DI for Sitecore – is obsolete as of Sitecore 8.1. These days, it’s much much easier than it used to be.
I’m going to demonstrate using Castle Windsor as my DI container. Personal preference, I’m sure there are similar ways of doing it with AutoFAC, SimpleInjector and whatever else roams about.
So let’s get to it.
Step 1 – Install packages
Start with a blank solution set up for MVC. Or use whatever you have on hand right now. Now get your NuGet going. We’re after the CommonServiceLocator.WindsorAdapter.
or if you prefer, via the Nuget Package Manager Console.
Step 2 – Update packages
Do a few updates. Personal preference here, but registration options have improved a lot since the minimum version of Castle Windsor required for this to work.
Step 3 – Write some code
But not a lot. Truly.
IntelliSense… mostly a blessing, but sometimes a bit of a nag.
Step 4 – Line it up
Now we just need to wire this up. Sitecore Best Practice would be, to get this cooked up in the <initialize> pipeline. So let’s do that.
Step 5 – Join us on Slack
Just kidding. You’re done. That’s it. I won’t go into detail on how to actually use Dependency Injection, there are plenty of good tutorials on the web for that.
Meanwhile I suggest you come on the Sitecore Slack Channel. You’ve got plenty of spare time on your hands now, I just showed you how to do a 1 day task in 5 minutes flat ;-)
If you’re feeling doubly lazy, I’ve created a Gist with the two files on display.