April 2009 - Posts

Dependency Injection

Normal 0 false false false EN-US X-NONE SA MicrosoftInternetExplorer4


 

Constructor Injection:

 

  interface IBusinessLogic

   {

     //Some code

   }

  

   class ProductBL : IBusinessLogic

   {

     //Some code

   }

  

   class CustomerBL : IBusinessLogic

   {

     //Some code

   }

   public class BusinessFacade

   {

      private IBusinessLogic businessLogic;

      public BusinessFacade(IBusinessLogic businessLogic)

      {

         this.businessLogic = businessLogic;

      }

   }

You'd instantiate the BusinessLogic classes (ProductBL or CustomerBL) as shown below:

   IBusinessLogic productBL = new ProductBL();

Then you can pass the appropriate type to the BusinessFacade class when you instantiate it:

   BusinessFacade businessFacade = new BusinessFacade(productBL);

 

 

Setter  Injection:

 

public class BusinessFacade

     {

      private IBusinessLogic businessLogic;

  

      public IBusinessLogic BusinessLogic

         {

          get

          {

            return businessLogic;

          }

  

            set

          {

            businessLogic = value;

          }

        }

     }

 

The following code snippet illustrates to implement setter injection using the BusinessFacade class shown above.

 

   IBusinessLogic productBL = new ProductBL();

   BusinessFacade businessFacade = new BusinessFacade();

   businessFacade.BusinessLogic = productBL;

 

 

Interface Injection:

 

    interface IBusinessLogic

   {

     //Some code

   }

  

   class ProductBL : IBusinessLogic

   {

     //Some code

   }

  

   class CustomerBL : IBusinessLogic

   {

     //Some code

   }

  

   class BusinessFacade : IBusinessFacade

   {

      private IBusinessLogic businessLogic;

      public void SetBLObject(IBusinessLogic businessLogic)

      {

         this.businessLogic = businessLogic;

      }

   }

 

In the code snippet above, the SetBLObject method of the BusinessFacade class accepts a parameter of type IBusinessLogic. The following code shows how you'd call the SetBLObject() method to inject a dependency for either type of BusinessLogic class:

 

   IBusinessLogic businessLogic = new ProductBL();

   BusinessFacade businessFacade = new BusinessFacade();

   businessFacade.SetBLObject(businessLogic);

 

Or:

 

   IBusinessLogic businessLogic = new CustomerBL();

   BusinessFacade businessFacade = new BusinessFacade();

   businessFacade.SetBLObject(businessLogic);

 

Posted by Padam Raj Gurung with no comments