ほげたつブログ

プログラムとアニメーションをかじって生きてる

ジェネリック型制約を使った、各フォームの単一インスタンスへのアクセサ

ふと思い立って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#のシンタックスハイライトってないのか。まぁいいけど。