Structuremap 按对象类型使用不同的具体类型
我在注册表中定义了一个默认的具体类型:
ForRequestedType<IXRepository>()
.TheDefaultIsConcreteType<CacheXRepository>();
ChaceXRepository 有以下构造函数:
public class CacheXRepository: IXRepository{
public CacheXRepository(IXRepository xRepository,ICache cacheService){
在构造函数中,它接收一个与其自身具有相同接口类型的对象,但我想传递一个不同的具体类型。
如何在注册表中定义,如果类型是 CacheXRepository,那么我希望参数 IXRepository 的具体类型为 XRepository,在所有其他情况下 IXRepository 应解析为 CacheXRepository。
I have a default concrete type defined in a registry:
ForRequestedType<IXRepository>()
.TheDefaultIsConcreteType<CacheXRepository>();
The ChaceXRepository has the following constructor:
public class CacheXRepository: IXRepository{
public CacheXRepository(IXRepository xRepository,ICache cacheService){
In the constructor it receives an object that has the same interface type as itself, but I want to pass in a different concrete type.
How do I define in the registry that if the type is a CacheXRepository then I want the concrete type for parameter IXRepository to be XRepository, in all other cases IXRepository should resolve to CacheXRepository.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您应该看一下丰富方法。然后代码将如下所示:
查看此页面以获取更多信息:http://codebetter.com/blogs/jeremy.miller/archive/2008/01/27/interception-techniques-in-structuralmap-2-5.aspx< /a>
You should take a look at the enrichwith method. Then the code will look something like:
Look at this page for more info: http://codebetter.com/blogs/jeremy.miller/archive/2008/01/27/interception-techniques-in-structuremap-2-5.aspx
怎么样(不是测试):
我不太熟悉 Structuremap 方言:)
在我使用的版本中它将是:
How about something like (not testet):
Im not so familiar with that Structuremap dialect :)
In the version I am using it would be: