我有以下NinjectModule
派生类:
class MainModule : NinjectModule
{
public override void Load()
{
Bind<IMyClass>().To<MyClass>();
Bind<IMainClass>().To<MainClass>().OnActivation((context,myClass) =>
{ myClass.Add("Something", context.Kernel.Get<IMyClass>()); });
}
}
我的问题是IKernel
没有公开.Get<T>
扩展方法。
这样做有什么模式吗?
警告:我不想用Ninject属性来装饰我的类,因为Add
特定于MainClass
的工作方式我希望所有代码与其创建一起进行在这个模块中。
TIA
答案 0 :(得分:0)
Ninject
命名空间中,使用模块只需要using Ninject.Modules;
添加using Ninject;
表示可能存在以下情况:
Bind<IMainClass>().To<MainClass>()
.OnActivation((context,myClass) =>
{
foreach(var n in context.Kernel.GetAll<IMyClass>())
{
myClass.Add("Something", n);
}
});
我会稍微公开一下,看看是否有人有更好的方法来做这件事。