- 新建.net6web项目
- 新建IDatabase接口
public interface IDatabase
{
public void Insert();
public void Update();
}
- 编写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更新");
}
}
- 修改Program.cs
namespace ServiceProviderTest
{
public class Program
{
public static void Main(string[] args)
{
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddScoped<IDatabase,MysqlDataBase>();
builder.Services.AddScoped<IDatabase, SqlServerDataBase>();
builder.Services.AddControllers();
var app = builder.Build();
app.UseRouting();
app.UseEndpoints(options =>
{
options.MapControllers();
});
app.Run();
}
}
}
- 新建HomeController
using Microsoft.AspNetCore.Mvc;
namespace ServiceProviderTest
{
[Route("[Controller]")]
[ApiController]
public class HomeController : ControllerBase
{
private readonly IEnumerable<IDatabase> databases;
public HomeController(IEnumerable<IDatabase> databases)
{
this.databases = databases;
}
[HttpGet]
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";
}
}
}
- 测试
访问http://localhost:5083/home