Acr*_*gma 6 c# dependency-injection ninject
在早期版本的Ninject.Extensions.Conventions中,很容易扫描目录以获取程序集,按接口过滤类,然后加载所有包含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");
}
}
Run Code Online (Sandbox Code Playgroud)
然而,在我最近更新到最新版本后,一切似乎都消失了,我无法做到
有人有解决方案吗?
仍然有https://github.com/ninject/ninject.extensions.conventions扩展。但是,界面已更改为以下内容:
kernel.Bind(x =>
{
x.FromAssembliesInPath("somepath")
.IncludingNonePublicTypes()
.SelectAllClasses()
.InheritedFrom<IPlugin>()
.BindDefaultInterface() // Binds the default interface to them;
});
Run Code Online (Sandbox Code Playgroud)
更新:如何将所有内容绑定IPlugin到IPlugin使用约定扩展(如上所述),然后执行以下操作:
var plugins = IResolutionRoot.GetAll<IPlugin>();
kernel.Load(plugins);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7335 次 |
| 最近记录: |