The main intension of the object-oriented programming is to manipulate real world objects and one of the features is reusability. There are many ways to get reusability and one of the easiest ways is ‘Inversion of Control’ in architectural patterns especially.

There are many techniques to implement ‘Inversion of Control’, find the following image for more conceptual view.

Inversion of Control

Now let’s talk about Dependency Injection. Here also same, we can Implement DI (Dependency Injection) with help of constructor, Property, Interface and Interface. This resource deals only Property Injection.

What is Injection and why it is helpful?


Injection is a technique to change object behavior at runtime.

Property Injection

Inject object through property properties with help of get and set.

Get a sample project and add Interface components to it, for more information

IdataActions is an Interface for method declarations.

  1. public interface IdataActions
  2. {
  3. void AddCustomerEntry(IdataProperties iDataProperties = null);
  4. }
IdataProperties for property declaration’s.
  1. public interface IdataProperties
  2. {
  3. string customerName { get; set;}
  4. int customerId { get; set; }
  5. string customerAddress { get; set; }
  6. }
IdataProperties

Now let’s add PropertyInjection.cs class to implement IdataProperties and set to property injection.

property injection
  1. public class PropertyInjection: IdataProperties
  2. {
  3. public IdataProperties iDataProperties
  4. {
  5. get
  6. {
  7. return new PropertyInjection();
  8. }
  9. }
  10. public string customerName
  11. {
  12. get
  13. {
  14. return "CustomerName";
  15. }
  16. set
  17. {
  18. // throw new NotImplementedException();
  19. }
  20. }
  21. public int customerId
  22. {
  23. get
  24. {
  25. return 123;
  26. }
  27. set
  28. {
  29. // throw new NotImplementedException();
  30. }
  31. }
  32. public string customerAddress
  33. {
  34. get
  35. {
  36. return "India";
  37. }
  38. set
  39. {
  40. // throw new NotImplementedException();
  41. }
  42. }
  43. }
Finally, implementation like the following,
  1. class Program: IdataActions
  2. {
  3. PropertyInjection propertyInjection = new PropertyInjection();
  4. public void AddCustomerEntry(IdataProperties iDataProperties = null)
  5. {
  6. if (iDataProperties == null)
  7. {
  8. // propertyInjection.iDataProperties : carried out your data, In other words this property
  9. // will generate readymate data to your Entry operations. It is very best suite to
  10. // Test Cases.
  11. iDataProperties = propertyInjection.iDataProperties;
  12. Console.WriteLine("customerId" + iDataProperties.customerId);
  13. Console.WriteLine("customerName" + iDataProperties.customerName);
  14. Console.WriteLine("customerAddress" + iDataProperties.customerAddress);
  15. }
  16. Console.WriteLine("Customer has been created");
  17. }
  18. static void Main(string[] args)
  19. {
  20. Program progrm = new Program();
  21. progrm.AddCustomerEntry();
  22. Console.Read();
  23. }
  24. }
Code

Run and verify.