Prism.Unity で名前をつけて登録する


前回の記事で Prism.Unity を使って DI する基本的な方法を紹介しました。
今回はそこに少しだけ追加で、名前をつけてクラスやインスタンスを登録し、名前を使ってコンテナから取り出す方法を紹介します。

登録

IAnimal dog1 = new Dog()
{
    Name = "pochi"
};
IAnimal dog2 = new Dog()
{
    Name = "john"
};
container.RegisterInstance<IAnimal>("pochi", dog1);
container.RegisterInstance<IAnimal>("john", dog2);

引数に名前を入れます。 RegisterType や RegisterSingleton でも同様です。

インジェクション

    public class MainViewModel
    {
        [Dependency("john")]
        public IAnimal John { get; set; }

        public MainViewModel([Dependency("pochi")]IAnimal animal)
        {

        }
    }

Dependency アトリビュートの後に登録した名前をつけるだけです。