私のアクション(任意のロジック)を含むクラスがあります:
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);
わかりましたが、socActions クラスのメソッドで、自分のリポジトリに接続するか、その他の依存性注入を行いたいと思います。
- IRepositoryMy repositoryMy をコンストラクターに追加すると、上記のようにクラスを作成できませんでした。bcz には、引数 IRepositoryMy を持つコンストラクターが必要です。
- フィールドに注入しようとすると、機能しません (プロパティ = null)。
- メソッド (CalcA、CalcB) でインジェクションを実行しようとしても機能しません。
このタスクを実際にどのように作成する必要がありますか(リポジトリなどのクラスを挿入します)? アプリケーション内のすべてを静的としてマークしたくない:(
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 に注入するにはどうすればよいですか?