private void Save(AIBaseNode node) { FieldInfo[] props = node.GetType().GetFields(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public); foreach (FieldInfo prop in props) { AISerializedVariable v = prop.GetCustomAttribute <AISerializedVariable>(); if (v == null) { continue; } context[node.GetInstanceID() + prop.Name] = prop.GetValue(node); } }
private void Load(AIBaseNode node) { FieldInfo[] props = node.GetType().GetFields(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public); foreach (FieldInfo prop in props) { AISerializedVariable v = prop.GetCustomAttribute <AISerializedVariable>(); if (v == null) { continue; } if (context.ContainsKey(node.GetInstanceID() + prop.Name)) { prop.SetValue(node, context[node.GetInstanceID() + prop.Name]); } else { Type type = prop.FieldType; var d = type.IsValueType ? Activator.CreateInstance(type) : null; prop.SetValue(node, d); } } }