ASP.NET Core中对开放泛型(Open Generic)的依赖注入

发布时间 2023-10-19 22:07:25作者: JohnYang819
public interface IRepository<T>
{
    void Add(T entity);
    List<T> Get();
}
public class Repository<T> : IRepository<T>
{
    List<T> _list = new List<T>();
    public void Add(T entity)
    {
        _list.Add(entity);
    }

    public List<T> Get()
    {
        return _list;
    }
}

public static void Main(string[] args)
{
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddSingleton(typeof(IRepository<>), typeof(Repository<>));//接受两个开放泛型类型的type!!!!!!!!!!!!!
app.MapGet("/getall", (IRepository<int> res) =>//注意这里是IRepository<int>!!!!!!!!!!!!
{
    return res.Get();
});
app.MapPost("/post/{id}", (int id, IRepository<int> res) =>//注意这里是IRepository<int>!!!!!!!!!!!!
{
    res.Add(id);
    return Results.Ok($"received {id}");
});
app.Run();

}