我正在使用 .Net core Web 应用程序。
在我的应用程序中,我使用它Lazy来将大量耗时的操作缓存到 Lazy 值中:
interface IFoo
{
Lazy<Task<int>> MyLazy { get; set; }
}
class Foo : IFoo
{
public Lazy<Task<int>> MyLazy { get; set; }
public Foo()
{
MyLazy = new Lazy<Task<int>>(() => /*heavy operation*/ Task.FromResult(3));
}
}
当然,我不想在构造函数中运行繁重的操作,但仅在需要时才运行,然后缓存该值。恕我直言,懒惰的财产很好。
值得一提的是:我确实计划使用.AdddSingleton<Ifoo,Foo>.
所以现在我可以注入IFoo并获得MyLazy财产。
但我不想set公开。我尝试将其更改为protected set但出现错误:
问题:
我想我在这里走错路了。
如何创建 DI 接口类来公开重载操作的缓存属性?(不允许更改,外部Foo
)
完整的关闭:我们需要从数据库加载一些要在整个应用程序中使用的行,并且不想每次都加载它们。
GCT1015
相关分类