Rya*_*yan 10 c# asp.net .net-core asp.net-core
我需要在 ASP.NET Core 应用程序的生命周期内将一个对象保留在内存中,在该应用程序中我序列化该对象并将其作为快照存储在持久存储中。稍后在对象的生命周期中,我需要通过反序列化并替换单例来恢复该对象的状态。它不一定是单例,但我需要保证该对象只有一个实例。
我尝试了以下操作,但似乎它只替换了当前的请求,之后就没有任何内容了。我假设 DI 容器制作了它自己的对象副本,但我不确定
internal static SingleObject SingleObject { get; set; } = new SingleObject();
services.AddSingleton<OrderBook>(SingleObject)
Run Code Online (Sandbox Code Playgroud)
有没有办法替换单例实例,或者我必须推出自己的单例类来处理这种情况?
我有一个单身人士,CachedData
直到意识到需要在某个时刻快速重置它。所以只是实现了一个包装器(见下文)。现在包装器ResettableCachedData
是单例的,并且CachedData
是瞬态的。任何时候都可以快速Reset()
重新创建CachedData
,同时通过 访问其数据ResettableCachedData.Data
。
public class ResettableCachedData
{
private readonly IServiceProvider _services;
public ResettableCachedData(IServiceProvider services)
{
_services = services;
Reset();
}
public CachedData Data { get; protected set; }
public void Reset()
{
Data = _services.GetRequiredService<CachedData>();
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10350 次 |
最近记录: |