2009-02-19 48 views
3

如何在扫描我的程序集时添加一些作用域?谷歌似乎并没有与“structuremap扫描cacheby”很高兴:/StructureMap,扫描程序集和范围确定

ObjectFactory.Configure(registry => 
{ 
    registry.Scan(x => 
    { 
     x.AssemblyContainingType(typeof(IRepository<>)); 
     x.With<DefaultConventionScanner>(); 
    }); 
} 

回答

2

我解决这个得到的方式是建立一个自定义的惯例扫描仪:

public class CustomScanner : ITypeScanner 
{ 
    #region ITypeScanner Members 

    public void Process(Type type, PluginGraph graph) 
    {         
     graph.AddType(type); 
     var family = graph.FindFamily(type); 
     family.AddType(type); 
     family.SetScopeTo(InstanceScope.Hybrid); 
    } 

    #endregion 
} 
6

这里有一个方法,使工作与较新的IRegistrationConvention API:

它可以像这样使用:

container.Configure(registry => 
{ 
    registry.Scan(x => 
    { 
     x.AssemblyContainingType<Foo>(); 
     x.AddAllTypesOf<IFoo>(); 
     x.Convention<SingletonConvention>(); 
    }); 
}); 
+0

谢谢,作品像一个魅力。 – dariol 2011-10-28 21:53:15