gpt4 book ai didi

singleton - 如何将 Structuremap 配置为通过 Singleton 在 Assembly 和 Cache 中自动扫描类型?

转载 作者:行者123 更新时间:2023-12-03 08:23:50 25 4
gpt4 key购买 nike

我正在使用 mvc.net 和 StructureMap 为我扫描和注册所有存储库和服务。现在我想通过 Singleton 注册和缓存。我能怎么做?

 IContainer container = new Container(x => {
// Register Repositories and Services
x.Scan(y => {
y.AssemblyContainingType<SomeRepository>();
y.AssemblyContainingType<SomeService>();

y.IncludeNamespaceContainingType<SomeRepository>();
y.IncludeNamespaceContainingType<SomeService>();
});

// Register Controllers
x.Scan(y => {
y.TheCallingAssembly();
y.AddAllTypesOf<IController>().NameBy(type => type.Name.Replace("Controller", ""));
});
});

最佳答案

使用 2.6 中的新 API,不推荐使用 ITypeScanner。这应该作为约定来实现。一个简单的例子是你想注册一个特定接口(interface)的所有类型都是单例的约定:

    Scan(a =>
{
a.AssemblyContainingType<IMyPluginType>();
a.With(new SingletonConvention<IMyPluginType>());
a.AddAllTypesOf<IMyPluginType>();
});

然后:
    internal class SingletonConvention<TPluginFamily> : IRegistrationConvention
{
public void Process(Type type, Registry registry)
{
if (!type.IsConcrete() || !type.CanBeCreated() || !type.AllInterfaces().Contains(typeof(TPluginFamily))) return;

registry.For(typeof(TPluginFamily)).Singleton().Use(type);
}
}

关于singleton - 如何将 Structuremap 配置为通过 Singleton 在 Assembly 和 Cache 中自动扫描类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/977862/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com