gpt4 book ai didi

c# - Controller 外部的 IMemoryCache 依赖注入(inject)

转载 作者:太空狗 更新时间:2023-10-29 21:32:30 24 4
gpt4 key购买 nike

我有一个带有 API 的 ASP.NET Core MVC 项目。

然后我在名为 Infrastructure.

的同一个解决方案中有一个类库。

我的 API 在类库基础结构中调用存储库方法,在类 UserRepository

如果我在 API Controller 中使用:

private static IMemoryCache _memoryCache;
public Api(IMemoryCache cache) //Constructor
{
_memoryCache = cache;
}

我可以在 Controller 中使用缓存。但我希望 ASP.NET 注入(inject)相同的引用以用于基础结构库中的 UserRepository 类。

这样我就可以从 API 调用,像这样的方法

UserRepository.GetUser(Id);

在 UserRepository 类中:

namespace Infrastructure
{
public class UserRepository
{
public static User GetUser(Id)
{
**//I want to use the Cache Here**
}
}
}

即使不是 Controller ,我如何告诉 ASP.NET 将 IMemoryCache 注入(inject)到 UserRepository 类中?

最佳答案

避免所有(静态单例、事件记录模式和静态类)在一起的具体解决方案:

public class ApiController : Controller
{
private readonly UserRepository_userRepository;
public ApiController(UserRepository userRepository)
{
_userRepository = userRepository;
}

public Task<IActionResult> Get()
{
// Just access your repository here and get the user
var user = _userRepository.GetUser(1);

return Ok(user);
}
}

namespace Infrastructure
{
public class UserRepository
{
public readonly IMemoryCache _memoryCache;

public UserRepository(IMemoryCache cache)
{
_memoryCache = cache;
}

public User GetUser(Id)
{
// use _memoryCache here
}
}
}

// Startup.cs#ConfigureServices
services.AddMemoryCache();

关于c# - Controller 外部的 IMemoryCache 依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40946583/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com