DependencyInjection 同一服务多注入靶向定位


依赖注入:

Microsoft.Extensions.DependencyInjection 

using System.Data;


ServiceCollection sc = new ServiceCollection();
sc.AddTransient();
sc.AddTransient();
using (ServiceProvider spo = sc.BuildServiceProvider())
{
    IEnumerable dbs = spo.GetServices().Where(t=>t.GetType().Name== nameof(Mysql));
foreach (var item in dbs) { item.ConStr = "xxxxxxxxxxxxxxxxxxxxxx"; int i = item.Excute("update table set a=1 where a=2"); } } interface IDbHelper { public string ConStr { get; set; } DataTable Select(string sql); int Excute(string sql); } class Mysql : IDbHelper { public string ConStr { get; set; } public int Excute(string sql) {Console.WriteLine("Mysql Excute"); return 1; } public DataTable Select(string sql) { Console.WriteLine("Mysql Select"); return null; } } class Oracle : IDbHelper { public string ConStr { get; set; } public int Excute(string sql) { Console.WriteLine("Oracle Excute"); return 1; } public DataTable Select(string sql) { Console.WriteLine("Oracle Select"); return null; } } class DB2 : IDbHelper { public string ConStr { get; set; } public int Excute(string sql) { Console.WriteLine("DB2 Excute"); return 1; } public DataTable Select(string sql) { Console.WriteLine("DB2 Select"); return null; } }