public Type[] GetGenericArguments(Type t) { Type[] tt = null; if (_genericTypes.TryGetValue(t, out tt)) return tt; else { tt = t.GetGenericArguments(); _genericTypes.Add(t, tt); return tt; } }