如果StructureMap Registry有重复扫描会发生什么?

时间:2017-10-31 21:57:56

标签: asp.net-mvc memory-leaks structuremap structuremap4

我正在尝试挖掘我的MVC网络应用程序中的内存泄漏,我注意到的一件事是我的StructureMap的DefaultRegistry有一个重复的扫描... scan.TheCallingAssembly():

    public DefaultRegistry()
    {
        Scan(
            scan =>
            {                    
                scan.TheCallingAssembly();
                scan.WithDefaultConventions();                    
                scan.TheCallingAssembly();
           });
    }

这会导致问题吗?它会导致内存泄漏吗? (请问题)。我今晚要发布修正版,所以我最终会发现是否可以解决问题;但是,如果重复的扫描方法有任何副作用,那将很高兴知道。

此外,扫描方法出现的顺序是否有任何意义? scan.WithDefaultConventions()需要最后,或者首先,还是重要?

1 个答案:

答案 0 :(得分:0)

以下是StructureMap中的相关代码:https://github.com/structuremap/structuremap/blob/master/src/StructureMap/Graph/AssemblyScanner.cs#L29-L30

所以不,StructureMap不会在对Scan()的任何一次调用中双重扫描同一个程序集。如果您在多个Scan()操作中执行相同的逻辑操作,可能可能,但至少在上述情况下,这些特定的传统注册不会添加相同的类型两次。

不,您声明程序集和注册约定的顺序无关紧要。注册约定将按照您定义的顺序执行,因此您会看到在少数情况下反映在依赖顺序中。