Pull some init logic in enum property operator to static constructor.

This commit is contained in:
2023-02-26 16:22:37 +08:00
parent 3561354231
commit 998713b41f

View File

@@ -103,12 +103,15 @@ namespace Cryville.Crtr {
readonly static Dictionary<int, int> _cache = new Dictionary<int, int>();
readonly Action<T> _cb;
readonly Func<int, T> _caster;
public Enum(Action<T> cb, Func<int, T> caster) {
static Enum() {
if (!typeof(T).IsEnum)
throw new ArgumentException("Type is not enum");
var names = typeof(T).GetFields(BindingFlags.Public | BindingFlags.Static);
for (int i = 0; i < names.Length; i++)
_cache[IdentifierManager.SharedInstance.Request(names[i].Name)] = Convert.ToInt32(names[i].GetValue(null));
}
public Enum(Action<T> cb, Func<int, T> caster) {
_cb = cb;
_caster = caster;
}