Skip to content

Instantly share code, notes, and snippets.

@ruselknow
Last active September 27, 2021 12:22
Show Gist options
  • Select an option

  • Save ruselknow/c7ec53b66d2d41beb078a59a113427c4 to your computer and use it in GitHub Desktop.

Select an option

Save ruselknow/c7ec53b66d2d41beb078a59a113427c4 to your computer and use it in GitHub Desktop.
Example of Constructor Injection
using System;
namespace DependencyInjection
{
public interface IDependent
{
void DoSomething();
}
public class Dependent1 : IDependent
{
public void DoSomething()
{
Console.WriteLine("Hello from Dependent1");
}
}
public class Dependent2 : IDependent
{
public void DoSomething()
{
Console.WriteLine("Hello from Dependent2");
}
}
public class MainClass
{
private readonly IDependent _dependent;
public MainClass(IDependent dependent)
{
_dependent = dependent
?? throw new ArgumentNullException(nameof(dependent), "Property cannot be null");
}
public void DoSomething()
{
_dependent.DoSomething();
}
}
internal static class Program
{
private static void Main()
{
// Get the correct dependency
var dependency = GetCorrectDependency();
// Create class and inject the dependency
var mainClass = new MainClass(dependency);
mainClass.DoSomething();
Console.ReadLine();
}
private static IDependent GetCorrectDependency()
{
return new Dependent1();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment