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

依赖注入:

Microsoft.Extensions.DependencyInjection 

 

using System.Data;


ServiceCollection sc = new ServiceCollection();
sc.AddTransient<IDbHelper,Mysql>();
sc.AddTransient<IDbHelper, Oracle>();
using (ServiceProvider spo = sc.BuildServiceProvider())
{
    IEnumerable<IDbHelper> dbs = spo.GetServices<IDbHelper>().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; } }

 

posted @ 2022-01-24 15:50  后跳  阅读(29)  评论(0编辑  收藏  举报