我正在尝试使用 Simple Injector 学习依赖注入,所以我创建了一个简单的程序。我浏览了大量的例子,但没有找到类似的东西。Ninject 有一个类似的例子,他们使用
Bind<Samurai>().ToSelf();
但是我没有在简单的注入器中找到任何自绑定示例。就目前而言,程序运行良好,我得到了我正在寻找的预期结果,但这是正确的方法吗?该程序是最后一个代码示例。
界面
public interface ICar
{
void Move(string direction, int distance);
void Stop();
}
班级
public class Driver
{
private readonly ICar _car = null;
public Driver(ICar car)
{
this._car = car;
}
public void Drive(string direction, int distance)
{
_car.Move(direction, distance);
}
public void Brake()
{
_car.Stop();
}
}
实现
public class Ferrari : ICar
{
public void Move(string direction, int distance)
{
Console.WriteLine("I am driving {0} really fast for {1} miles", direction, distance);
}
public void Stop()
{
Console.WriteLine("I am slamming on the brakes because I'm going too fast");
}
}
public class Lexus : ICar
{
public void Move(string direction, int distance)
{
Console.WriteLine("I am driving {0} for {1} miles", direction, distance);
}
public void Stop()
{
Console.WriteLine("I am applying the brakes");
}
}
程序
class Program
{
static void Main(string[] args)
{
var container = new Container();
container.Options.AllowOverridingRegistrations = true;
container.Register<ICar, Lexus>();
container.Register<ICar, Ferrari>();
container.Verify();
var johnDoeLexus = new Driver(container.GetInstance<Lexus>());
johnDoeLexus.Drive("North", 10);
johnDoeLexus.Brake();
var johnDoeFerrari = new Driver(container.GetInstance<Ferrari>());
johnDoeFerrari.Drive("North", 10);
johnDoeFerrari.Brake();
Console.ReadLine();
}
}