Impact of Gen-AI on IT Jobs - Growth Mindset Show
x
C# Corner
Tech
News
Videos
Forums
Jobs
Books
Events
More
Interviews
Live
Learn
Training
Career
Members
Blogs
Challenges
Certification
Contribute
Article
Blog
Video
Ebook
Interview Question
Collapse
Feed
Dashboard
Wallet
Learn
Achievements
Network
Refer
Rewards
SharpGPT
Premium
Contribute
Article
Blog
Video
Ebook
Interview Question
Register
Login
.NET
ADO.NET
Android
ASP.NET
C#
Databases & DBA
Design Patterns & Practices
iOS
Java
OOP/OOD
SharePoint
Software Testing
Web Development
WPF
View All
12
Reply
What is Dependency Injection and provide example?
Julian
8y
7.4k
0
Reply
Delete Row
Delete Column
Insert Link
×
Insert
Cancel
Embed YouTube Video
×
Width (%)
Height (%)
Insert
Cancel
Table Options
×
Rows
Columns
First row as header
Create Table
Insert Image
×
Selected file:
Alignment
Left
Center
Right
Select an image from your device to upload
Upload to Server
Cancel
Submit
DI is providing an object what is required at runtime. So that the object is not dependent on any other object instance. This helps creating code that is more manageable and testable.Example: Say I have a Car object which is dependent on Wheel. So if I create the Car class as: public Car() {Wheel w = new Wheel(); } The above code is fully dependent on Wheel Object. What happens if there are several versions of wheel to be tested.Using the concept of DI we can create the Car class like : public Car(IWheel wheel) {this.wheel = wheel; } Now we can create any type of wheel and inject its instance while creating the Car.
Julian
8y
10
The process of removing dependency of objects which makes the independent objects. It is used in TDD.It Increases code reusability. It Improves code maintainability.
Satyaprakash Samantaray
8y
6
Before DI, let's first understand IOC. Inversion of Control (IOC) is a generic term that means objects do not create other objects on which they rely to do their work. Instead, they get the objects that they need from an outside source.One of the analogy is Hollywood Principle i.e. Don’t call us, we’ll call you!! DI is a form of IOC or an implementation to support IOC or subset of IOC, where dependencies are passed through constructors/ setters/ methods/ interfaces.If this helps to address the issue, please close the thread by accepting the answer.
Prakash Tripathi
8y
4
Dependency Injection is a software design pattern that allow us to develop loosely coupled code. DI is a great way to reduce tight coupling between software components. DI also enables us to better manage future changes and other complexity in our software. The purpose of DI is to make code maintainable.The Dependency Injection pattern uses a builder object to initialize objects and provide the required dependencies to the object means it allows you to "inject" a dependency from outside the class.
Emamul Hasan
8y
4
Dependency injection means instead of leaving it to the user to create the dependent objects required by any other object, they are taken care of automatically. You will need an Inversion of Control container to take care of the dependencies of an object so it can be created without passing all its required dependencies.
Nilesh Shah
8y
3
Here's a common example. You need to log in your application. But, at design time, you're not sure if the client wants to log to a database, files, or the event log.So, you want to use DI to defer that choice to one that can be configured by the client.This is some pseudocode (roughly based on Unity):You create a logging interface:public interface ILog {void Log(string text); } then use this interface in your classespublic class SomeClass {[Dependency]public ILog Log {get;set;} } inject those dependencies at runtimepublic class SomeClassFactory {public SomeClass Create(){var result = new SomeClass();DependencyInjector.Inject(result);return result;} } and the instance is configured in app.config:
Brajesh Kumar
8y
3
In Dependency Injection design pattern, we does not care about creation of Object . Object is automatically created by IO Container assigned to object
pankaj rai
8y
1
public class Customer {private IStorageHelper helper;public Customer(){helper = new DatabaseHelper();}...... }public class Customer {private IStorageHelper helper;public Customer(IStorageHelper helper){this.helper = helper;}...... }public class HomeController : Controller {ICustomerRepository repository = null;public HomeController(ICustomerRepository repository){this.repository = repository;}public ActionResult Index(){List
data = repository.SelectAll();return View(data);} } public interface ICustomerRepository {List
SelectAll();CustomerViewModel SelectByID(string id);void Insert(CustomerViewModel obj);void Update(CustomerViewModel obj);void Delete(CustomerViewModel obj); } public class CustomerViewModel {public string CustomerID { get; set; }public string CompanyName { get; set; }public string ContactName { get; set; }public string Country { get; set; } } public class MyControllerFactory:DefaultControllerFactory {private Dictionary
> controllers;public MyControllerFactory(ICustomerRepository repository){controllers = new Dictionary
>();controllers["Home"] = controller => new HomeController(repository);}public override IController CreateController(RequestContext requestContext, string controllerName){if(controllers.ContainsKey(controllerName)){return controllers[controllerName](requestContext);}else{return null;}} }public class ControllerFactoryHelper {public static IControllerFactory GetControllerFactory(){string repositoryTypeName = ConfigurationManager.AppSettings["repository"];var repositoryType = Type.GetType(repositoryTypeName);var repository = Activator.CreateInstance(repositoryType);IControllerFactory factory = new MyControllerFactory(repository as ICustomerRepository);return factory;} }
...
protected void Application_Start() {AreaRegistration.RegisterAllAreas();RouteConfig.RegisterRoutes(RouteTable.Routes);ControllerBuilder.Current.SetControllerFactory(ControllerFactoryHelper.GetControllerFactory()); }
Suresh Kumar
8y
0
public class Customer {private IStorageHelper helper;public Customer(){helper = new DatabaseHelper();}...... }public class Customer {private IStorageHelper helper;public Customer(IStorageHelper helper){this.helper = helper;}...... }public class HomeController : Controller {ICustomerRepository repository = null;public HomeController(ICustomerRepository repository){this.repository = repository;}public ActionResult Index(){List
data = repository.SelectAll();return View(data);} } public interface ICustomerRepository {List
SelectAll();CustomerViewModel SelectByID(string id);void Insert(CustomerViewModel obj);void Update(CustomerViewModel obj);void Delete(CustomerViewModel obj); } public class CustomerViewModel {public string CustomerID { get; set; }public string CompanyName { get; set; }public string ContactName { get; set; }public string Country { get; set; } } public class MyControllerFactory:DefaultControllerFactory {private Dictionary
> controllers;public MyControllerFactory(ICustomerRepository repository){controllers = new Dictionary
>();controllers["Home"] = controller => new HomeController(repository);}public override IController CreateController(RequestContext requestContext, string controllerName){if(controllers.ContainsKey(controllerName)){return controllers[controllerName](requestContext);}else{return null;}} }public class ControllerFactoryHelper {public static IControllerFactory GetControllerFactory(){string repositoryTypeName = ConfigurationManager.AppSettings["repository"];var repositoryType = Type.GetType(repositoryTypeName);var repository = Activator.CreateInstance(repositoryType);IControllerFactory factory = new MyControllerFactory(repository as ICustomerRepository);return factory;} }
...
protected void Application_Start() {AreaRegistration.RegisterAllAreas();RouteConfig.RegisterRoutes(RouteTable.Routes);ControllerBuilder.Current.SetControllerFactory(ControllerFactoryHelper.GetControllerFactory()); }
Suresh Kumar
8y
0
Dependency Injection (DI) is a design pattern that takes away the responsibility of creating dependencies from a class thus resulting in a loosely coupled system. In order to understand DI you need to be aware of the following terms: -Dependency -Dependency Inversion Principle -Inversion of Control (IoC)
Suresh Kumar
8y
0
Dependency Injection means passing something that allow the caller of a method to inject dependent objects into the method when it is called. For example if you wanted to allow the following piece of code to swap SQL providers without recompiling the method: We can pass dependency in following ways 1- Constructor level 2- Method level 3- Property level There are following advantages of DI1- Reduces class coupling2-Increases code reusing 4- Improves code maintainability 5- Improves application testing Example: public interface IEmployeeService{ void SaveEmployee();} public class EmployeeService : IEmployeeService{ public void SaveEmployee() { //To Do: business logic }} public class Client{ private IEmployeeService _employeeService; public Client(IEmployeeService employeeService) { this._employeeService = employeeService; } public void Start() { this._EmployeeService. SaveEmployee (); } } ______________________________________class Program{ static void Main(string[] args) { Client client = new Client(new EmployeeService()); client.Start(); Console.ReadKey(); } } Dependency Injection is basically to reduce coupling between the code. The caller can call the object without modifying the method it's calling .
Hamid Khan
8y
0
Hi kindly find example of DIthis is tightly coupled class example class TeachingMath{public TeachingMath(){}public void teaching(){Console.WriteLine("Math teaching");}}class TeachingHindi{public TeachingHindi(){}public void teaching(){Console.WriteLine("Hindi teaching");}}class TeachingEnglish{public TeachingEnglish(){}public void teaching(){Console.WriteLine("English teaching");}}class Teaching{TeachingEnglish eng = new TeachingEnglish();TeachingHindi hindi = new TeachingHindi();TeachingMath math = new TeachingMath();public void TeachingClass(string[] subjects){foreach(string subject in subjects){if (subject=="English"){eng.teaching();}if (subject == "Hindi"){hindi.teaching();}if (subject == "Math"){math.teaching();}}}}public class Demo{public static void Main(){Teaching teaching = new Teaching();string[] subject={"Hindi","English"};teaching.TeachingClass(subject);Console.ReadKey(); }}----------------------------------------------------------------------------------------- Now we using DI with this example interface ITeaching{void teaching();}class TeachingMath:ITeaching{public TeachingMath(){}public void teaching(){Console.WriteLine("Math teaching");}}class TeachingHindi : ITeaching{public TeachingHindi(){}public void teaching(){Console.WriteLine("Hindi teaching");}}class TeachingEnglish : ITeaching{public TeachingEnglish(){}public void teaching(){Console.WriteLine("English teaching");}}class Teaching{public void TeachingClass(ITeaching[] subjects){foreach (ITeaching subject in subjects){ITeaching tesching = subject;tesching.teaching();}}}class Program{static void Main(string[] args){ITeaching[] te={new TeachingEnglish(),new TeachingHindi()};Teaching tech = new Teaching();tech.TeachingClass(te);Console.Read(); }}
Lalit Raghav
8y
0
Message