StructureMap, сканирование сборок и определение объема - PullRequest
3 голосов
/ 19 февраля 2009

Как добавить область видимости при сканировании своих сборок? Похоже, Google не совсем доволен «проверкой кэша структурной карты»: /

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

Ответы [ 2 ]

6 голосов
/ 13 июля 2010

Вот способ заставить его работать с более новым API IRegistrationConvention:

public class SingletonConvention : IRegistrationConvention
{
    #region IRegistrationConvention Members

    public void Process(Type type, Registry registry)
    {
        registry.For(type).Singleton();
    }

    #endregion
}

Может использоваться следующим образом:

container.Configure(registry =>
{
    registry.Scan(x =>
    {
        x.AssemblyContainingType<Foo>();
        x.AddAllTypesOf<IFoo>();
        x.Convention<SingletonConvention>();
    });
});
2 голосов
/ 06 октября 2009

Я обошел это путем создания собственного сканера конвенций:

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
}
...