One minute
[Unity] クラスをKeyにしたDictionaryを作るには
お世話になっております。
しゃまとんです。
以前からclassをkeyにしたDictionaryって出来ないのかなーと思っていて、 仕方なくnewなんかしてイケてないなーと思いながら実装していたのですが、 こっちの方が良さげなのでメモしておきたいと思います。
やり方はただSystem.Typeを使えば良かったのですね。という話でした。
ということで下記のような感じで確認コードを書いて適当なオブジェクトに付けておきます。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TypeMap : MonoBehaviour {
static private Dictionary<System.Type, string> map = new Dictionary<System.Type, string>() {
{typeof(TestA), "This is A"},
// {typeof(TestB), "This is B"},
{typeof(TestC), "This is C"},
};
// Use this for initialization
void Start () {
log<TestA>();
log<TestB>();
log<TestC>();
}
// check
private void log<T>() {
System.Type type = typeof(T);
if (map.ContainsKey(type)) {
Debug.Log(map[type]);
} else {
Debug.Log("not found type!!");
}
}
}
// sample classes
public class TestA {}
public class TestB {}
public class TestC {}
準備ができたら実行してみます。
下図のような感じでclassをKeyにして、Valueを取得することができました。
これだけだと何に使うのという感じなんですが、例えば指定のクラスに対して、
指定のメソッドを実行するとか、指定のリクエストをするとか…でしょうか?
何にせよ、つっかえが取れた感じなので今後に活かせそうかなと思います!
何かに参考になれば幸いです。
以上です。