/// <summary> /// 多態性を用いて処理を行うが、オブジェクトによって少し挙動を変えるテスト /// </summary> /// <param name="runnable">実行可能オブジェクト</param> static void ExecutableObjectRunTest2(IRunnable runnable) { // もう少し細分化して処理を決めたい場合 // ただし、一部のオブジェクトに関して処理を分岐する。 // (大体のオブジェクトには同じ処理を適応する) // taminato:↓HumanにBeforeとAfterのメソッド追加でどう? // yasutomi: せっかくだから分離してみた // 人間を処理する場合にはひと手間加える if (runnable is IHuman) { Console.WriteLine("人間が処理を行います"); IHuman human = runnable as IHuman; human?.BeforeRun(); runnable?.Run(); human?.AfterRun(); } else { runnable?.Run(); } }