2016-07-25 54 views
1

大家好,
目前我正在努力的代碼部分來自SM 2.X轉化爲SM 3.X, 但仍然有一些問題截取部分。InterceptWith()在StructureMap 3.X

也許有人更熟悉StructureMap可以幫助我嗎?

container.IfTypeMatches(type => type.Equals(typeof(PageRepositoryDescriptor))) 
    .InterceptWith(i => new CustomPageRepositoryDescriptor()); 

該代碼來自EPiServer blog

回答

0

類似的問題得到回答在Episerver社區論壇在這裏:http://world.episerver.com/forum/developer-forum/-Episerver-75-CMS/Thread-Container/2016/8/structuremap-v2-vs-v3-syntax/

TL; DR - 你應該能夠在Structuremap V3使用此語法來獲得預期的效果:

[ModuleDependency(typeof(EPiServer.Web.InitializationModule))] 
    public class InterceptModule : IConfigurableModule 
    { 
    public void ConfigureContainer(ServiceConfigurationContext context) 
    { 
     context.Services.Intercept<IContentRepositoryDescriptor>((locator, defaultService) => 
     { 
      var pageRepositoryDescriptor = defaultService as PageRepositoryDescriptor; 
      return pageRepositoryDescriptor != null ? 
       new MyPageRepositoryDescriptor(pageRepositoryDescriptor) : 
       defaultService; 
     }); 
    } 

    public void Initialize(InitializationEngine context) 
    {} 

    public void Uninitialize(InitializationEngine context) 
    {} 
}