0

我用结构图4.5.1在我的ASP.NET MVC 5.x的Web应用程序,我做扫描接口实现并与下面的代码添加HybridHttpOrThreadLocalScoped()为所有这些:使用HybridHttpOrThreadLocalScoped的所有实例

public static class SmObjectFactory 
{ 
    private static readonly Lazy<StructureMap.Container> _containerBuilder = 
     new Lazy<StructureMap.Container>(DefaultContainer, LazyThreadSafetyMode.ExecutionAndPublication); 

    public static IContainer Container => _containerBuilder.Value; 

    private static StructureMap.Container DefaultContainer() 
    { 
     return new StructureMap.Container(config => 
     { 

      config.Scan(scanner => 
      { 
       scanner.AssemblyContainingType(typeof(IPostService)); 
       scanner.WithDefaultConventions(); 
       scanner.SingleImplementationsOfInterface() 
         .OnAddedPluginTypes(expression => 
         expression.HybridHttpOrThreadLocalScoped()); 
      }); 
     }); 
    } 
} 
  1. 当我使用此代码,HybridHttpOrThreadLocalScoped()这也增加了对所有Interfacs是固有IDisposable接口?如果答案是否定的,我该怎么做?
  2. 当我Sholud不使用HybridHttpOrThreadLocalScoped()

回答

0
  • HybridHttpOrThreadLocalScoped只是一个life-time符。所以当你指定它时,它将被用于所有请求和配置的实例,这里它不是重要的,它不是IDisposable。这不是关于处置任何事情,而是生命时间说明符。
  • 如果您需要来自IoC容器的每个请求的新实例,请不要使用它。
+0

最佳答案Thanks @VahidN –

相关问题