如果 StructureMap Registry 有重复扫描会怎样?

What happens if StructureMap Registry has duplicate scan?

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

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

这会导致问题吗?它会导致内存泄漏吗? (请成为问题)。我今晚将发布更正,所以我最终会知道这是否解决了问题;但最好能确定重复扫描方法是否有任何副作用。

另外,扫描方法出现的顺序有什么意义吗? scan.WithDefaultConventions() 需要排在最后,还是排在前面,或者这有关系吗?

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

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

不,以什么顺序声明程序集和注册约定并不重要。注册约定将按照您定义它们的顺序执行,因此您会在少数情况下看到依赖顺序中的反映。