gpt4 book ai didi

dependency-injection - 具有多个装饰器的装饰器模式和结构图

转载 作者:行者123 更新时间:2023-12-04 08:20:11 25 4
gpt4 key购买 nike

我正在尝试使用结构图连接一系列装饰器,但遇到了一些问题。

我已阅读 this question这让我达到了可以有一个装饰类的地步,但我似乎无法让多个级别的装饰器工作。我拥有的是 A 类,它以连接字符串作为参数,然后是 B 类和 C 类,它们都是 A 类的装饰器。我可以得到结构图来创建 B 来包装 A,但我似乎无法得到 C 包装 B 包装一种。

这适用于 1 个级别:

For<IQuestionRepository> ()
.Use<LinqToSqlQuestionRepository> ()
.Ctor<string>("connectionString")
.Is(x=>System.Configuration.ConfigurationManager.ConnectionStrings["aspnetdbConnectionString"].ConnectionString)
.EnrichWith (x=>new RecentQuestionCachedRepository(x))

我认为只需添加另一个 EnrichWith 就可以这样工作:
For<IQuestionRepository> ()
.Use<LinqToSqlQuestionRepository> ()
.Ctor<string>("connectionString")
.Is(x=>System.Configuration.ConfigurationManager.ConnectionStrings["aspnetdbConnectionString"].ConnectionString)
.EnrichWith (x=>new RecentQuestionCachedRepository(x))
.EnrichWith (y=>new FeaturedQuestionCachedRepository(y));

但这只是给了我一个 FeaturedQuestionCachedRepository,它包装了一个 LinqToSqlQuestionRepository,但RecentQuestionCachedRepository 不在堆栈中的任何位置。

我究竟做错了什么?

最佳答案

在单个 EnrichWith 调用中完成:

.EnrichWith (x=> 
new FeaturedQuestionCachedRepository(
new RecentQuestionCachedRepository(x)
)
)

关于dependency-injection - 具有多个装饰器的装饰器模式和结构图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4579385/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com