C# 使用依赖项注入注入不同类型的类

C# 使用依赖项注入注入不同类型的类,c#,dependency-injection,C#,Dependency Injection,我是依赖注入的新手。我在读关于Ninject的文章时有点怀疑 在Ninject wiki中,我看到了依赖注入的一个基本示例。由此我产生了怀疑 这是最新的 下面是该链接中提到的声明 “当类紧密耦合时,如果不改变它们的实现,它们就不能互换。为了避免类紧密耦合,我们可以使用接口提供一定程度的间接寻址。” 如果我想创建一个名为Dress的新类,并将其注入武士类。那个时候我也需要重写武士课,知道如下 class Samurai { readonly IWeapon weapon; read

我是依赖注入的新手。我在读关于Ninject的文章时有点怀疑

在Ninject wiki中,我看到了依赖注入的一个基本示例。由此我产生了怀疑

这是最新的

下面是该链接中提到的声明

“当类紧密耦合时,如果不改变它们的实现,它们就不能互换。为了避免类紧密耦合,我们可以使用接口提供一定程度的间接寻址。”

如果我想创建一个名为Dress的新类,并将其注入武士类。那个时候我也需要重写武士课,知道如下

class Samurai
{
    readonly IWeapon weapon;
    readonly IDress dress
    public Samurai(IWeapon weapon, IDress dress)
    {
        this.weapon = weapon;
        this.dress = dress;
    }

    public void Attack(string target)
    {
        this.weapon.Hit(target);
    }

     public void Wear(){


     }
}

或者我还有其他选择吗?

你的问题与依赖注入或IoC有什么关系还不是很清楚,但是你改变
武士定义的另一个选择是将其扩展到一个新的类中,例如

public ClothedSamurai : Samurai
{
    readonly IDress dress;
    public ClothedSamurai(IWeapon weapon, IDress dress) : base(weapon)
    {
        this.dress = dress;
    }    

    public void Wear()
    {
        //whatever this does
    }    
}

现在还不清楚你的问题与依赖注入或IoC有什么关系,但是你改变
Samurai
定义的另一个选择是将其扩展到一个新类中,例如

public ClothedSamurai : Samurai
{
    readonly IDress dress;
    public ClothedSamurai(IWeapon weapon, IDress dress) : base(weapon)
    {
        this.dress = dress;
    }    

    public void Wear()
    {
        //whatever this does
    }    
}

谢谢Preston Guillothanks Preston Guillott