我正在尝试创建一个通用工厂,我可以调用它来使用 Ninject 构造函数注入来实例化一个类及其依赖项。它似乎工作得很好,但它并不适合我,我不知道这是不是因为它是我第一次使用泛型和 IoC 容器,但我认为我的方法有缺陷。而不是解释生病只是转储我的简单测试控制台应用程序。
农场.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();
}
}
程序.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>();
}
}
任何想法/反馈将不胜感激,谢谢。