Articles → .NET DESIGN PATTERN → Property (Or Setter) Dependency Injection In C#
Property (Or Setter) Dependency Injection In C#
Purpose
NuGet Package Installation
Click to Enlarge
Create An Interface And A Class
public interface IDependency {
void Display();
}
public class DependencyClass : IDependency {
public void Display() {
Console.WriteLine("Display Function Called");
}
}
Create An Implementation Class
public class ImplementationClass {
public IDependency Dependency { get; set; }
public void WrapperDisplay() {
Dependency.Display();
}
}
Call The Implementation Class
// Create a new service collection
var services = new ServiceCollection();
// Configure the services
services.AddTransient<IDependency, DependencyClass>();
services.AddTransient<ImplementationClass>();
// Build the service provider
var serviceProvider = services.BuildServiceProvider();
// Resolve the ImplementationClass instance from the service provider
var implementation = serviceProvider.GetService<ImplementationClass>();
DependencyClass obj = new DependencyClass();
implementation.Dependency = obj;
implementation.WrapperDisplay();
Console.ReadLine();
Output
Click to Enlarge
Full Code
using Microsoft.Extensions.DependencyInjection;
using System;
namespace PropertyDependencyDemo
{
class Program
{
static void Main(string[] args)
{
// Create a new service collection
var services = new ServiceCollection();
// Configure the services
services.AddTransient<IDependency, DependencyClass>();
services.AddTransient<ImplementationClass>();
// Build the service provider
var serviceProvider = services.BuildServiceProvider();
// Resolve the ImplementationClass instance from the service provider
var implementation = serviceProvider.GetService<ImplementationClass>();
DependencyClass obj = new DependencyClass();
implementation.Dependency = obj;
implementation.WrapperDisplay();
Console.ReadLine();
}
}
public interface IDependency {
void Display();
}
public class DependencyClass : IDependency {
public void Display() {
Console.WriteLine("Display Function Called");
}
}
public class ImplementationClass {
public IDependency Dependency { get; set; }
public void WrapperDisplay() {
Dependency.Display();
}
}
}