Structuremap按对象类型使用不同的具体类型
我在注册表中定义了一个默认的具体类型:Structuremap按对象类型使用不同的具体类型,structuremap,concrete,Structuremap,Concrete,我在注册表中定义了一个默认的具体类型: ForRequestedType<IXRepository>() .TheDefaultIsConcreteType<CacheXRepository>(); 在构造函数中,它接收一个与自身具有相同接口类型的对象,但我想传入一个不同的具体类型 我如何在注册表中定义,如果类型是CacheXRepository,那么我希望参数IXRepository的具体类型是XRepository,在所有其他情况下,IXRe
ForRequestedType<IXRepository>()
.TheDefaultIsConcreteType<CacheXRepository>();
在构造函数中,它接收一个与自身具有相同接口类型的对象,但我想传入一个不同的具体类型
我如何在注册表中定义,如果类型是CacheXRepository,那么我希望参数IXRepository的具体类型是XRepository,在所有其他情况下,IXRepository应该解析为CacheXRepository。您应该看看enrichwith方法。然后代码将类似于:
ForRequestedType<IXRepository>().TheDefault.Is
.OfConcreteType<XRepository>()
.EnrichWith(
(context, repository) =>
new CacheXRepository(repository));
ForRequestedType()。默认值为
.of混凝土类型()
恩里希维思先生(
(上下文、存储库)=>
新的CacheXRepository(repository));
查看此页面了解更多信息:类似(非测试)的内容如何:
ForRequestedType()
.默认混凝土类型()
.WithTorArg(“xREpository”)
.EqualTo(新XRepository());
我对Structuremap方言不太熟悉:)
在我使用的版本中,它将是:
For<IXRepository>()
.Use<CacheXRepository>()
.CtorDependency<IXRepository>("xRepository")
.IsConcreteType<XRepository>();
()
.Use()
.x依赖关系(“xRepository”)
.IsConcreteType();
谢谢!我根据您的答复使用的代码:ForRequestedType().TheDefaultIsConcreteType().EnrichWith((存储库)=>new CacheXRepository(存储库,ObjectFactory.GetInstance());感谢您的快速响应,我最终使用了不同的答案,因为它使用了我版本中的语法。谢谢你,我感谢你的帮助!没问题——你应该在接受他的答案的同时,对他的答案投赞成票:)
ForRequestedType<IXRepository>()
.TheDefaultIsConcreteType<CacheXRepository>()
.WithCtorArg("xREpository")
.EqualTo(new XRepository());
For<IXRepository>()
.Use<CacheXRepository>()
.CtorDependency<IXRepository>("xRepository")
.IsConcreteType<XRepository>();