依赖注入:
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; } }