.NET6中一个接口多个实现的使用

发布时间:2023-08-29 15:15:37来源:本站阅读(910)

    1、新建.NET6 WEB项目

    2、新建IDatabase接口

    public interface IDatabase
    {
        public void Insert();
    
        public void Update();
    }

    3、写2个实现

    public class MysqlDataBase : IDatabase
    {
       public void Insert()
       {
           Console.WriteLine("MysqlDataBase插入");
       }
    
       public void Update()
       {
           Console.WriteLine("MysqlDataBase更新");
       }
    }
    
    public class SqlServerDataBase : IDatabase
    {
       public void Insert()
       {
           Console.WriteLine("SqlServerDataBase插入");
       }
    
       public void Update()
       {
           Console.WriteLine("SqlServerDataBase更新");
       }
    }

    4、注入

    builder.Services.AddScoped<IDatabase,MysqlDataBase>();
    builder.Services.AddScoped<IDatabase, SqlServerDataBase>();

    5、使用

    public class HomeController : ControllerBase
    {
         private readonly IEnumerable<IDatabase> databases;
    
         public HomeController(IEnumerable<IDatabase> databases)
         {
             this.databases = databases;
         }
    
         
         public string Get()
         {
             var s1 = databases.Where(c => c.GetType() == typeof(MysqlDataBase)).FirstOrDefault();
             var s2 = databases.Where(c => c.GetType() == typeof(SqlServerDataBase)).FirstOrDefault();
             s1?.Insert();
             s2?.Insert();
             return "success";
         }
    }

关键字