我正在尝试挖掘我的MVC网络应用程序中的内存泄漏,我注意到的一件事是我的StructureMap的DefaultRegistry有一个重复的扫描... scan.TheCallingAssembly():
public DefaultRegistry()
{
Scan(
scan =>
{
scan.TheCallingAssembly();
scan.WithDefaultConventions();
scan.TheCallingAssembly();
});
}
这会导致问题吗?它会导致内存泄漏吗? (请问题)。我今晚要发布修正版,所以我最终会发现是否可以解决问题;但是,如果重复的扫描方法有任何副作用,那将很高兴知道。
此外,扫描方法出现的顺序是否有任何意义? scan.WithDefaultConventions()需要最后,或者首先,还是重要?
答案 0 :(得分:0)
以下是StructureMap中的相关代码:https://github.com/structuremap/structuremap/blob/master/src/StructureMap/Graph/AssemblyScanner.cs#L29-L30。
所以不,StructureMap不会在对Scan()
的任何一次调用中双重扫描同一个程序集。如果您在多个Scan()
操作中执行相同的逻辑操作,可能可能,但至少在上述情况下,这些特定的传统注册不会添加相同的类型两次。
不,您声明程序集和注册约定的顺序无关紧要。注册约定将按照您定义的顺序执行,因此您会看到在少数情况下反映在依赖顺序中。