Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在.NET Core 2.1 WebApi中存储数据?_C#_.net_Asp.net Web Api_.net Core - Fatal编程技术网

C# 如何在.NET Core 2.1 WebApi中存储数据?

C# 如何在.NET Core 2.1 WebApi中存储数据?,c#,.net,asp.net-web-api,.net-core,C#,.net,Asp.net Web Api,.net Core,我正在.NETCore2.1中开发一个WebApi,我需要一个共享的键/值存储,可以通过API接收的任何请求进行写入和读取 存储应该使用应用程序的堆,而不是外部系统(例如Redis缓存或平面文件解决方案),因为我必须保留无法序列化的C#对象。如果我没有错,您希望将数据存储在C#中,就像内存缓存一样。 您可以使用下面的类 public class ApplicationCacheManager { private Dictionary<string,

我正在.NETCore2.1中开发一个WebApi,我需要一个共享的键/值存储,可以通过API接收的任何请求进行写入和读取


存储应该使用应用程序的堆,而不是外部系统(例如Redis缓存或平面文件解决方案),因为我必须保留无法序列化的C#对象。

如果我没有错,您希望将数据存储在C#中,就像内存缓存一样。 您可以使用下面的类

 public class ApplicationCacheManager
        {
            private Dictionary<string, object> Data { get; set; }

            public ApplicationCacheManager()
            {
                Data = new Dictionary<string, object>();
            }

            public bool IsSet(string key)
            {
                return Data.TryGetValue(key, out var data) && data != null;
            }

            public T Get<T>(string key)
            {
                if (Data.TryGetValue(key, out var data))
                    return (T)data;

                return default(T);
            }

            public void Set<T>(string key, T data)
            {
                Data[key] = data;
            }

            public void Remove(string key)
            {
                Data.Remove(key);
            }

            public void Dispose()
            {
                if (Data != null)
                    Data = null;
            }
        }
公共类应用程序缓存管理器
{
专用字典数据{get;set;}
公共应用程序CacheManager()
{
数据=新字典();
}
公共布尔IsSet(字符串键)
{
返回数据。TryGetValue(键,输出var数据)&&Data!=null;
}
公共T获取(字符串键)
{
if(数据TryGetValue(键,输出var数据))
返回(T)数据;
返回默认值(T);
}
公共无效集(字符串键,T数据)
{
数据[键]=数据;
}
公共无效删除(字符串键)
{
数据删除(键);
}
公共空间处置()
{
如果(数据!=null)
数据=空;
}
}
这个类应该是单例的,以存储应用程序生命周期中的所有数据。 将其注册到DI容器作为singleton

services.AddSingleton<ApplicationCacheManager>();
services.AddSingleton


我希望这能有所帮助。

请注意,内存中的存储不是持久性的。话虽如此:您可以使用
静态
,但请确保它们是线程安全的。谢谢您,我刚刚完成了它的实现,它的工作非常有魅力。很高兴提供帮助,祝您愉快!