Skip to main content

IOC Part 3 – Using Ninject

Open visual studio and click new Project and choose a console application and name it Ninject.Console you should have your solution like that



Now lets get the Ninject, I prefer Nuget If you don’t have it installed get it from here http://nuget.codeplex.com/releases or you can search for it in the VS extensions Tools->Extension manager. Open Nuget by right clicking the reference folder in the solution and click manager nugget packages and then search for Ninject and click install Package see screen shot below



Configuration part
Depending on the type of you app you need to set the configuration cause they must take place at the starting of the app, and since we are in a console application then the most convenient place is the program.cs. there we must create our standard kernel which is the handler which does all the binding.
Binding is the operation of registering a type to its interface “will be explained by code later”
So for now we need to create a standard kernel check below in programs.cs
//A build error will occur stating the construct for standard kernel take 1 parameter
var kernel = new StandardKernel();

As it says the a build error will say that he constructor need a kernel module to operate
What is the kernel module : It holds all the configuration for the types created before so for instance it hold that object A is the implementation for interface IA
How do we create it ?
Like this
Since it is only gonna be used in this assembly I am going to define it as internal so add a new class and call NinjectBootstrapper and implement the kernelmodule interface and override the method load cause there we will put our configuration AKA bindings


internal class NinjectBootsrapper : NinjectModule
    {
        public override void Load()
        {

        }
    }

Now Let’s Create our derived types
First create a class called Processor and an interface for it called IProcessor as below



Now lets add the Configuration to Ninjectbootstrapper like below
 public interface IProcessor
    {
        /// <summary>
        /// Process something 
        /// </summary>
        void Process();
    }

    public class Processor : IProcessor
    {
        /// <summary>
        /// Process something 
        /// </summary>
        public void Process()
        {
            System.Console.Write("Processing ............");
        }
    }
And then lets go back to program.cs and add some usage to it for processor like below
And the hit run notice the screen below WOW it works and I can resolve object based on its interface configuration see screen shot below



Thanks for reading

Comments

Popular posts from this blog

Windows Phone 8 - Application bar command binding MVVM

This is a short post in which i will explain how on Windows phone 8 to bind the application bar button or menu item, first this is only a fix for the  BindableApplicationbar  which supports windows phone 7 only, i just made it support windows 8 no features added or anything. i have uploaded the dll file here so it can be accessible easily here is the link to download http://sdrv.ms/RApUal now that you got the link lets check how we gonna use it you can refer to BinableApplicationbar  or check out the code here that i actually used in my app and i already read it there !  Add a reference to the BindableApplicationBar library here is the link again  http://sdrv.ms/RApUal Add XML namespace declaration in your page's XAML: xmlns : bar ="clr-namespace:BindableApplicationBar;assembly=BindableApplicationBar" Set Bindable.ApplicationBar property on your page code as in the snippet below: < phone : PhoneApplicationPage >  ...

Windows 8 – XAML/C# how to Add multi push pins to map control Bing maps

Greetings readers I promised you in my previous post that I am gonna go a little bit deeper in the Bing map control and I will should more advanced scenarios and one is push pins, Basically I am going to tell you how you can add push pin to your map and also how to dynamically populate those push pins using binding Refer to my previous article Using bing maps part one  for more details cause I am going build on it so if you ever feel that you don’t understand something just click the link and spend a few minutes reading it, I promise you it will prove worthy. First lets add a normal push pin to our map  < Grid Background = " {StaticResource ApplicationPageBackgroundThemeBrush} " > < bm : Map x:Name = " MyMap " Width = " 640 " Height = " 480 " Credentials = " {StaticResource BingMapsApiKey} " > < bm : Map.Children > < bm : Pushpin x:Name = ...

Windows 8 RTM Using bing map control. How to use the map control in a metro (modern) style App

This is a briefing article on how to start using Bing map control using XAML & C#, to begin with you must first follow a set of instruction to get a license key for using Bing maps. Lets talk first about bing maps and the map control Bing map control is a part of the Bing SDK for windows 8 modern style apps About the SDK as Microsoft says : Bing Maps SDK for Metro style apps (RTM Beta)   combines the power of Windows 8 and   Bing Maps ™ to provide an enhanced mapping experience for modern style apps. Developers can use this Bing Maps control to incorporate the latest road maps and aerial views into a Windows 8 Metro style app. This SDK includes controls for apps built using JavaScript, as well as apps built using C#, C++, and Visual Basic, and requires a   Bing Maps Key   for a Windows Metro style app. (If you have an existing “Metro style apps (BETA)” key, it will still work until the evaluation period expires.) Now lets get started and here...