Estoy confundido acerca de las abstracciones de la interfaz cuando uso IoC

Recientemente he estado tratando de aprender IoC y tengo un par de preguntas basadas en el siguiente código:

public class WarriorModule : NinjectModule 
{
    public override void Load() 
    {
        Bind<IWeapon>().To<Sword>();
        Bind<Samurai>().ToSelf();
    }
}

Tengo problemas para comprender el nuevo concepto de interfaces. Antes crearía una interfaz comoIRunnable, implementando la funciónvoid Run(). Con IoC, ahora estoy viendo una interfaz como algo que solo se asigna a una sola clase concreta. Asumiendo que,¿Cómo mapearía múltiples clases concretas a una interfaz? Sigo leyendo que puedes asignar múltiples interfaces a una sola clase concreta, pero no al revés (a menos que sea aquí donde entra en juego el mapeo contextual).

as interfaces de Asumir solo se asignan a un solo objeto, ¿Cuándo debería crear una interfaz en lugar de tener un objeto unido a sí mismo? De cualquier manera, ¿tendrá que cambiar el mismo código cuando una asignación cambia correctamente?

Edit: Marqué la respuesta que hice porque me ayudó personalmente. Sin embargo, ambos comentarios son igualmente informativos.

Respuestas a la pregunta(2)

Su respuesta a la pregunta