我想創建一個通用工廠,我可以調用實例化一個類和它的依賴使用Ninject構造函數注入。它似乎工作得很好,但它沒有和我一起坐好,我不知道是否因爲它第一次使用泛型和IoC容器,但我認爲我的方法有缺陷。而不是解釋生病只是轉儲我簡單的測試控制檯應用程序。通用Ninject工廠
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>();
}
}
任何想法/反饋將不勝感激,謝謝。
基本上是[service locator anti-pattern](http://blog.ploeh.dk/2010/02/03/ServiceLocatorIsAnAntiPattern.aspx)。可能這就是爲什麼它感覺很奇怪。 –
對我來說看起來很好......如果你切換到自動構造函數依賴注入,那麼這就是它的樣子。你認爲什麼是「有缺陷的」? –
舉個更多的例子,你在哪裏使用Factory? –