Ninject コンストラクター インジェクションを使用して、クラスとその依存関係をインスタンス化するために呼び出すことができるジェネリック ファクトリを作成しようとしています。うまく機能しているようですが、うまくいきません。ジェネリックと IoC コンテナーを初めて使用したためかどうかはわかりませんが、私のアプローチには欠陥があると思います。悪く説明するのではなく、単純なテスト コンソール アプリをダンプします。
Farm.cs
class Farm
{
private readonly IAnimal _animal;
private readonly IVehicle _vehicle;
public Farm(IAnimal animal, IVehicle vehicle)
{
_animal = animal;
_vehicle = vehicle;
}
public void Listen()
{
_animal.Speak();
_vehicle.Run();
}
}
program.cs
class Program
{
static void Main(string[] args)
{
var farm = new NinjectFactory<Farm>().GetInstance();
farm.Listen();
Console.Read();
}
}
NinjectFactory.cs
class NinjectFactory<T>
{
public T GetInstance()
{
var kernel = new StandardKernel(new IoCModule());
return kernel.Get<T>();
}
}
NinjectModule.cs
class IoCModule : NinjectModule
{
public override void Load()
{
Bind<IAnimal>().To<Dog>();
Bind<IVehicle>().To<Tractor>();
}
}
アイデアやフィードバックをいただければ幸いです。