如何从NopCommerce v3.5的Setting表中加载记录

本文关键字:Setting 加载 记录 NopCommerce v3 | 更新日期: 2023-09-27 18:16:13

我正在尝试使用NopCommerce v3.5,并试图用Ninject v3.2取代Autofac。我一直在搜索NopCommerce如何从设置表加载记录,它仍然不清楚。如果有的话,我想用Ninject加载设置。谢谢你的帮助。

nop .web. framework . dependencyregistry .cs中的示例代码

builder.RegisterType<SettingService>().As<ISettingService>()
    .WithParameter(ResolvedParameter.ForNamed<ICacheManager>("nop_cache_static"))
    .InstancePerLifetimeScope();
builder.RegisterSource(new SettingsSource());

如何从NopCommerce v3.5的Setting表中加载记录

我将尽我所能解释清楚。

根据Autofac的文档,RegisterSource允许您为您不知道或考虑过的类注册工厂。它将很晚将类型与提供它们的规则绑定在一起。

这在这里如何应用?

当您从容器中需要一个类的实例(例如LoggerSettings)时,autofacc将检查您在nopCommerce拥有的不同依赖注册器中声明的所有规则,并且它将询问注册源:嘿!我需要一个LoggerSettings的实例,你知道这个吗?RegistrationSource检查它并说"是的,它实现了ISettings,在这里你有它的注入规则(在这种情况下,lambda从通用存储库检索设置实例),保留它,下次你不需要问"。注意,它将返回类型的实例化规则,而不是实例本身。

作为一种替代方法,也许你可以爬行所有的程序集,但是对于一个带有这样的插件的大型系统来说,这将是一个痛苦的过程。您也可以注册每个特定的类,但在这种情况下,这是不可行的。

要查看它的工作情况,在SettingsSource和委托内部的两个方法中设置两个断点并启动项目。

要在Ninject中做到这一点,你需要复制这个行为