在构建我的Rest API时,我遇到了基于这篇文章构建缓存仓库的问题。
通过策略模式构建CachedRepository
我喜欢这个想法,因为代码看起来很好而且干净。因此我尝试实现它,结果实现效果非常好。
然而,现在我想要连接我的DI(使用标准的Microsoft DI,没有花哨的东西),但我在那里遇到了一些麻烦。
基本上问题是我有多个实现相同接口的类,而缓存实现需要引用直接实现,如下所示:
我在我的服务中使用它(如文章所述)的方式如下:
然而,现在我想要连接我的DI(使用标准的Microsoft DI,没有花哨的东西),但我在那里遇到了一些麻烦。
基本上问题是我有多个实现相同接口的类,而缓存实现需要引用直接实现,如下所示:
public class CachedArticleRepository : IArticleRepository
{
public CachedArticleRepository(IArticleRepository article, IMemoryCache cache)
{
_article = article;
_cache = cache;
}
}
public class ArticleRepository : IArticleRepository
{
public ArticleRepository(IAmbientContextLocator locator)
{
_locator = locator;
}
}
我在我的服务中使用它(如文章所述)的方式如下:
我在我的服务中像这样使用它:
public class DivisionService : IDivisionService
{
public DivisionService(IArticleRepository article)
{
_article = article;
}
}
我的问题是如何配置DI,以便为构建缓存仓库使用非缓存变体,而为其他所有内容使用缓存仓库?
CachedArticleRepository
类是 装饰器设计模式 的一种实现。 - Steven