首页 > 解决方案 > 在 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()检索集合(在应用程序启动时设置一次)。

有没有更好的方法来缓存所有类可用的集合?

标签: caching.net-coresingletonin-memory-databasein-memory

解决方案


推荐阅读