依存性注入が必要なクラスのインスタンスを注入するとどうなる?

気になったのでサンプルを作って試してみました。

タイトルが変な気がしますが、コードを見れば何をやっているのか分かるはず…。(適切なタイトルがあれば教えてください><)

// 感情インタフェース
public interface IFeeling
{
    // 感情にあった鳴き声を出力
    void Cry();
}

// 悲しい感情を表すクラス
public class Sad : IFeeling
{
    public void Cry()
    {
        Console.WriteLine("悲しいクマ・・・・・・");
    }
}

// 動物インタフェース
public interface IAnimal
{
    // 鳴き声を出力
    void Cry();
}

// わんくま
public class Wankuma : IAnimal
{
    // ペットの現在の感情をセットする
    [Dependency]
    public IFeeling Feeling { get;set; }

    public void Cry()
    {
        Feeling.Cry();
    }
}

// 人間
public class Person
{
    // 飼っている動物をセットする
    [Dependency]
    public IAnimal Pet { get;set; }

    // ペットを呼ぶ
    public void CallPet()
    {
        Pet.Cry();
    }
}

class Program
{
    static void Main(string[] args)
    {
        // DI コンテナ生成
        UnityContainer container = new UnityContainer();

        // DI コンテナに型を登録
        container.RegisterType<IAnimal, Wankuma>();
        cotnainer.RegisterType<IFeeling, Sad>();

        // DI コンテナから依存性注入済みの Person インスタンスを取得
        Person person = container.Resolve<Person>();

        // ペットを呼ぶ
        person.CallPet();

        Console.ReadLine();
    }
}

このコードを実行結果は次の通り。

悲しいクマ・・・・・・

うん。ちゃんと Wankuma クラスのインスタンスに Sad クラスのインスタンスがセットされている。