このように、私は、実行するためのアルゴリズムを持っている:このインタフェースのニーズのimplemention動的データとNInject複雑注入
public interface IContainer
{
int Size();
}
:
public interface IAlgorithm
{
void Run();
}
それはこのようになりますインターフェースに依存UIから取得したデータ
public class Container : IContainer
{
private readonly List<int> _data;
public Container(IEnumerable<int> data)
{
_data = new List<int>(data);
}
public int Size()
{
return _data.Count;
}
}
次に、IAlgorithmの実装はl IKEこの:
public class Algorithm : IAlgorithm
{
private readonly IContainer _container;
public Algorithm(IContainer container)
{
_container = container;
}
public void Run()
{
Console.WriteLine(_container.Size());
}
}
は、私はそれがNInject(私はViewModelにのコンストラクタのパラメータとして使用することができます)を介して注射だように、このインターフェイスを実装します。
public interface IAlgorithmFactory
{
IAlgorithm Create(IEnumerable<int> data);
}
問題がある:私はAlgorithm
工事中Kernel
からの右のインスタンスを取得できるようにする必要があります。実際の状況では、アルゴリズムの依存グラフは非常に大きく、データから作成する必要があるものは1つもありませんが、これらのことは他のものの依存関係です。
私のソリューションは、データから作成する必要があるすべてのクラスにInitialize
というメソッドがあることです。他のメソッドを使用する前に、呼び出し側はこれらのセリフを初期化する必要があります。それは悪い習慣のように聞こえる。
実際、私が話している実際のコードはhereです。今はすべてがシングルトンとして注入されています。
NInject経由でこれらのものを注入する他の方法はありますか?
注:すでにこの質問hereをデザインの観点から尋ねました。私はこれがNInjectソリューションに関する具体的な答えを得る良い場所だと思います。