caching - 在 dotnet core 中使用内存中的集合 - 如何使所有类都可用
问题描述
在 dotnet 核心项目中,如何在任何给定时间使内存中的集合对任何类可用?我正在考虑以下方法:
public interface IInMemoryCache
{
public void Setup();
}
public class InMemoryCache : IInMemoryCache
{
private List<MyObject> cache;
public void Setup() // entered once when app is started
{
cache = new List<MyObject>() {
new MyObject("param1", "param2"),
new MyObject("param3", "param4")
}
public IList<MyObject> GetCollection()
{
return this.collection;
}
}
然后在启动中:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IInMemoryCache cache)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
cache.Setup();
ETC
并且:
public void ConfigureServices(IServiceCollection services) {
services.AddSingleton<IInMemoryCache, InMemoryCache>();
这是一个好方法吗,是否意味着我可以在任何类中注入 IInMemoryCache 并能够访问缓存对象?- 在应用程序的整个生命周期内(意思是,当它启动并运行时,如果我重新启动它,集合预计将再次从运行 Setup 方法初始化)
所以现在在任何类中我只添加:IInMemoryCache cache
然后cache.GetCollection()
检索集合(在应用程序启动时设置一次)。
有没有更好的方法来缓存所有类可用的集合?
解决方案
推荐阅读
- javascript - React:PureComponent 和组件原型
- python - 如何按相同元素制作列表
- flutter - Flutter iOS进入后台,计时器未运行
- java - java - 字符串的字符可以在另一个字符串中输入多少次
- javascript - VueJS - 路由器 beforeEach 无限 next() 问题
- python - 为什么 Golang for 循环比 Python for 循环慢?
- sql - postgresql 查询以根据字段 - customerId 生成已订购交易编号的报告
- python - Celery 4.4.4 为未来的模块提供错误
- webpack-dev-server - webpack-dev-server 编译但不刷新我的网络浏览器
- android - WiFiP2PManager、OnPeersAvailable、DeviceList.Count 为零 - 始终