我有一個類,它包含我的行動(任何邏輯):不瞭解ninject和注射
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類方法中,我希望與我的存儲庫建立連接或進行任何其他依賴注入。
- 如果我添加IRepositoryMy repositoryMy到構造函數,那麼我不能 創建類如上,與參數 IRepositoryMy現在BCZ它需要構造函數。
- 如果我嘗試在現場進行注射,它不起作用 (property = null)。
- 如果我嘗試在方法中進行注射(CalcA, CalcB),它也不起作用。
我真的應該如何做這個任務(注入類,例如存儲庫)?不想慶祝一切都在我的應用程序爲靜態:(
的WinForms,C#,Ninject 3
編輯:
public class socActions
{
[Inject]
public IGridProcessor _GridProcessor { private get; set; }
所以,在方法其空:
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中?
我們展示您的ninject代碼請,這是至關重要的一點 –
類你在哪裏選擇根據傳入的值採取什麼行動似乎是一種代碼味道。你可能應該有一個基類或接口和幾個實現差異的類。 – Oded
仍然無法理解我該怎麼做,我可以注入現場? – user1612334