Dependency injection promotes loose coupling of components by passing dependencies to an object rather than having an object instantiate its own dependencies.(http://www.blackwasp.co.uk/DependencyInjection.aspx)
 
       
Example
        public interface ITruck
        {
            void Go(double distance);
        }
        public class Truck : ITruck
        {
            public double Consumption{ get; set; }
            public void Go(double distance)
            {
                double necessary_fuel = Consumption * distance;
            }
        }
        public interface IRoute
        {
            void AddTruck(ITruck dependency);
        }
        public class Route : IRoute
        {
            ITruck _truck;
            public double Distance { get; set; }
            public void AddTruck(ITruck truck)
            {
                _truck = truck;
            }
            public void TruckGo()
            {
                _truck.Go(Distance);
            }
        }
            Route route = new Route();
            route.Distance = 100;
            Truck truck = new Truck();
            truck.Consumption = 20;
            
            route.AddTruck(truck);
            route.TruckGo();