Program.cs
using AddKeyMethods;
using ConsoleApp1;
using Microsoft.Extensions.DependencyInjection;
var collection = new ServiceCollection();
collection.AddKeyedSingleton(Locations.India);
collection.AddKeyedSingleton(Locations.UAE);
collection.AddScoped();
var provider = collection.BuildServiceProvider();
//ITaxCalculator calculator = provider.GetKeyedService(Locations.India);
Console.Clear();
//Console.WriteLine($"Your tax rate is {calculator.CalculateTax()}");
var purchase = provider.GetService();
var total = purchase?.CheckOut();
Console.ReadKey();
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AddKeyMethods
{
public interface ITaxCalculator
{
int CalculateTax();
}
public class IndiaTaxCalculator : ITaxCalculator
{
public int CalculateTax() { return 30; }
}
public class UAETaxCalculator : ITaxCalculator
{
public int CalculateTax() { return 0; }
}
public enum Locations
{
India,
UAE,
USA
}
}
using AddKeyMethods;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web.Http;
namespace ConsoleApp1
{
public class Purchase
{
private readonly ITaxCalculator _taxCalculator;
public Purchase([FromKeyedServices(Locations.India)]ITaxCalculator taxCalculator)
{
_taxCalculator = taxCalculator;
}
[HttpGet]
public int CheckOut()
{
var total = _taxCalculator.CalculateTax() + 200;
return total;
}
}
}