介绍:
我正在使用Ninject Factory Extension将简单的对象工厂注入到我的服务类中。
这是我的接口和实现它的两个类:
public interface ICar
{
void Drive();
void Stop();
}
public class Mercedes : ICar
{
public void Drive()
{
Do mercedes drive stuff...
}
public void Stop()
{
Do mercedes stop stuff...
}
}
public class Ferrari : ICar
{
public void Drive()
{
Do ferrari drive stuff...
}
public void Stop()
{
Do ferrari stop stuff...
}
}
这是我在运行时动态创建汽车的对象工厂:
public interface ICarFactory
{
ICar CreateCar(string carType);
}
public class CarFactory : ICarFactory
{
public ICar CreateCar(string carType)
{
ICar car;
switch (type)
{
case "mercedes":
car = new Mercedes();
break;
case "ferrari":
car = new Ferrari();
break;
}
return car;
}
}
然后使用ninject工厂扩展“ToFactory”方法绑定我的汽车工厂接口:
public class CarModule : Ninject.Modules.NinjectModule
{
public override void Load()
{
Bind<ICarFactory>().ToFactory();
}
}
问题:
我的工厂按预期注入到我的服务类中,可用于创建汽车对象,但是 ninject 在这里爆炸,因为它无法正确地将 ICar 解析为具体类型,即。Mercedes
或Ferrari
由工厂CreateCar()
方法返回。
public CarService(string carType, ICarFactory carFactory)
{
var car = carFactory.CreateCar(carType);
}
问题:
假设我在这里使用的工厂模式与 ninject 工厂扩展的工作方式兼容,我如何设置 ICar -> Ferrari、ICar -> Mercedes 等的绑定,以便它们可以在运行时动态解析这种方法?
谢谢!