我有一个类,其中包含我的动作(任何逻辑):
public class socActions
{
public void Choose(int elem)
{
switch(elem) ... CalcA(elem) || CalcB(elem) ...
}
public void CalcA()
{
}
public void CalcB()
{
}
public void CalcC()
{
}
}
所以,在我的程序中,当我获得elem值时,我会使用它:
(new socActions()).Choose(elem_val);
Okey,但在socActions类方法中,我希望与我的存储库建立连接或进行任何其他依赖注入。
我应该如何完成这项任务(注入类,例如存储库)?不想将我的应用程序中的所有内容标记为静态:(
WinForms,C#,Ninject 3
修改
public class socActions
{
[Inject]
public IGridProcessor _GridProcessor { private get; set; }
所以,在方法中它的null:
public void UpdateInfo(...)
{
...
this._GridProcessor.Refresh();
}
在其他类中,我将IGridProcessor注入构造函数中的类,一切都很好。 在Program.cs中:
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
var kernel = new StandardKernel(new TwttModule());
var form = kernel.Get<Main>();
Application.Run(form);
}
public class TwttModule : NinjectModule
{
public override void Load()
{
Bind<IGridProcessor>().To<GridProcessor>();
}
}
public static class AnyClass
{
public static void Act()
{
....
(new socActions()).Choose(elem_val);
}
}
我应该如何将IGridProcessor注入socActions?
答案 0 :(得分:0)
使用构造函数注入时,不直接构造类,而是向ninject请求实例。根据您配置ninject的方式,您将获得一个新实例或一个单例实例等。
来自他们的文档:
Samurai warrior = kernel.Get<Samurai>();