Dependency injection 具有多个装饰器的装饰器模式和结构图
我正在尝试用结构图连接一系列的装饰器,但是我遇到了一些问题 我读过这本书,它让我达到了一个点,我可以有一个装饰类,但我似乎不能让多个层次的装饰工作。我拥有的是以连接字符串作为参数的类A,然后是类B和类C,它们都是类A的装饰器。我可以得到structuremap来创建B,它包装A,但我似乎不能得到C包装B包装A 这适用于1级:Dependency injection 具有多个装饰器的装饰器模式和结构图,dependency-injection,structuremap,Dependency Injection,Structuremap,我正在尝试用结构图连接一系列的装饰器,但是我遇到了一些问题 我读过这本书,它让我达到了一个点,我可以有一个装饰类,但我似乎不能让多个层次的装饰工作。我拥有的是以连接字符串作为参数的类A,然后是类B和类C,它们都是类A的装饰器。我可以得到structuremap来创建B,它包装A,但我似乎不能得到C包装B包装A 这适用于1级: For<IQuestionRepository> () .Use<LinqToSqlQuestionRepository&
For<IQuestionRepository> ()
.Use<LinqToSqlQuestionRepository> ()
.Ctor<string>("connectionString")
.Is(x=>System.Configuration.ConfigurationManager.ConnectionStrings["aspnetdbConnectionString"].ConnectionString)
.EnrichWith (x=>new RecentQuestionCachedRepository(x))
()
.使用()
.Ctor(“连接字符串”)
.Is(x=>System.Configuration.ConfigurationManager.ConnectionString[“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));
()
.使用()
.Ctor(“连接字符串”)
.Is(x=>System.Configuration.ConfigurationManager.ConnectionString[“aspnetdbConnectionString”].ConnectionString)
.EnrichWith(x=>new RecentQuestionCachedRepository(x))
.EnrichWith(y=>新功能问题缓存假设(y));
但这只是给了我一个FeaturedQuestionCachedRepository,它包装了一个LinqToSqlQuestionRepository,但最近的QuestionCachedRepository不在堆栈中的任何位置
我做错了什么?在一个EnrichWith呼叫中完成:
.EnrichWith (x=>
new FeaturedQuestionCachedRepository(
new RecentQuestionCachedRepository(x)
)
)