気になったのでサンプルを作って試してみました。
タイトルが変な気がしますが、コードを見れば何をやっているのか分かるはず…。(適切なタイトルがあれば教えてください><)
// 感情インタフェース 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(); } }
このコードを実行結果は次の通り。
悲しいクマ・・・・・・