ジェネリック型制約を使った、各フォームの単一インスタンスへのアクセサ
ふと思い立ってC#を使ってゲーム?を作ってて、各フォームの単一インスタンスへのアクセサが欲しかったので作ってみた。
class FormAccessor { private Dictionary<Type, Form> FormDictionary = new Dictionary<Type, Form>(); public Form Get<T>() where T : Form, new() { Type type = typeof(T); if (this.FormDictionary.ContainsKey(type) == false) { this.FormDictionary[type] = new T(); } return this.FormDictionary[type]; } }
やってることは簡単で、Get関数をジェネリック型制約使って Form の子であることと、コンストラクタ制約を付けているだけ。
型情報をKeyにしてDictionaryに保存して、取得時に無かったら生成する。
関係ないけど、C#のシンタックスハイライトってないのか。まぁいいけど。