gpt4 book ai didi

c# - Ninject -> 扫描程序集以匹配接口(interface)并加载为模块

转载 作者:太空狗 更新时间:2023-10-29 21:39:19 24 4
gpt4 key购买 nike

在 Ninject.Extensions.Conventions 的早期版本中,扫描程序集的目录、按接口(interface)过滤类然后加载所有包含 ninject 模块的内容非常容易。

kernel.Scan(scanner =>
scanner.FromAssembliesInPath(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location))
scanner.AutoLoadModules();
scanner.WhereTypeInheritsFrom<IPlugin>());

public class MyPlugin : NinjectModule, IPlugin {

public override void Load() {
Bind<IRepositoryFromPluginHost>().To<MyPluginImpl>().Named("special");
}
}

然而,在我最近更新到最新版本之后,一切似乎都消失了,我无法

  1. 自动加载模块
  2. 按接口(interface)过滤类型

有人对此有解决方案吗?

最佳答案

还有https://github.com/ninject/ninject.extensions.conventions延期。但是,界面已更改为以下内容:

kernel.Bind(x =>
{
x.FromAssembliesInPath("somepath")
.IncludingNonePublicTypes()
.SelectAllClasses()
.InheritedFrom<IPlugin>()
.BindDefaultInterface() // Binds the default interface to them;
});

更新:您如何使用约定扩展(如上所述)将所有 IPlugin 绑定(bind)到 IPlugin,然后执行以下操作:

var plugins = IResolutionRoot.GetAll<IPlugin>();
kernel.Load(plugins);

关于c# - Ninject -> 扫描程序集以匹配接口(interface)并加载为模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23628290/

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