using System.Collections.Generic; namespace XFEExtension.XFPManager { internal class XProperty { private object property; public object Property { get { return property; } set { property = value; } } private string propertyName; public string Name { get { return propertyName; } set { propertyName = value; } } } internal class XField { public object Field; public string Name; } /// /// XFE字段属性管理器 /// public class XFManager { private List Properties { get; set; } private List Fields { get; set; } /// /// 通过索引器获取属性或字段 /// /// /// public object this[string name] { get { foreach (var field in Fields) { if (field.Name == name) { return field.Field; } } foreach (var property in Properties) { if (property.Name == name) { return property.Property; } } return null; } set { foreach (var field in Fields) { if (field.Name == name) { field.Field = value; } } foreach (var property in Properties) { if (property.Name == name) { property.Property = value; } } } } /// /// 通过名称获取给定类型的字段或属性 /// /// /// /// public T X(string name) { foreach (var item in Properties) { if (item.Name == name) { return (T)item.Property; } } return default; } /// /// 通过名称设置给定类型的字段或属性 /// /// /// public void E(string name, object value) { foreach (var item in Properties) { if (item.Name == name) { item.Property = value; } } } /// /// XFE字段属性管理器 /// public XFManager() { Properties = new List(); Fields = new List(); } /// /// XFE字段属性管理器 /// /// 属性/字段名称和其值 /// 是否为属性 public XFManager(bool IsProperty, params object[] nameAndValue) { Properties = new List(); Fields = new List(); if (IsProperty) { for (int i = 0; i < nameAndValue.Length; i += 2) { Properties.Add(new XProperty() { Name = nameAndValue[i].ToString(), Property = nameAndValue[i + 1] }); } } else { for (int i = 0; i < nameAndValue.Length; i += 2) { Fields.Add(new XField() { Name = nameAndValue[i].ToString(), Field = nameAndValue[i + 1] }); } } } /// /// XFE字段属性管理器 /// /// 字段名称和其值 public XFManager(params object[] nameAndValue) { Properties = new List(); Fields = new List(); for (int i = 0; i < nameAndValue.Length; i += 2) { Fields.Add(new XField() { Name = nameAndValue[i].ToString(), Field = nameAndValue[i + 1] }); } } } /// /// XFE属性管理器 /// public class XFPManager { private List Properties { get; set; } /// /// 通过索引器获取属性 /// /// /// public object this[string name] { get { foreach (var property in Properties) { if (property.Name == name) { return property.Property; } } return null; } set { foreach (var property in Properties) { if (property.Name == name) { property.Property = value; } } } } /// /// 通过名称获取给定类型的属性 /// /// /// /// 属性值 public T X(string name) { foreach (var item in Properties) { if (item.Name == name) { return (T)item.Property; } } return default; } /// /// 通过名称设置给定类型的属性 /// /// /// public void E(string name, object value) { foreach (var item in Properties) { if (item.Name == name) { item.Property = value; } } } /// /// XFE属性管理器 /// public XFPManager() { Properties = new List(); } /// /// XFE属性管理器 /// /// 属性名称和其值 public XFPManager(params object[] nameAndValue) { Properties = new List(); for (int i = 0; i < nameAndValue.Length; i += 2) { Properties.Add(new XProperty() { Name = nameAndValue[i].ToString(), Property = nameAndValue[i + 1] }); } } } /// /// XFE字段管理器 /// public class XFFManager { private List Fields { get; set; } /// /// 通过索引器获取字段 /// /// /// public object this[string name] { get { foreach (var field in Fields) { if (field.Name == name) { return field.Field; } } return null; } set { foreach (var field in Fields) { if (field.Name == name) { field.Field = value; } } } } /// /// 通过名称获取给定类型的字段 /// /// /// /// 字段值 public T X(string name) { foreach (var item in Fields) { if (item.Name == name) { return (T)item.Field; } } return default; } /// /// 通过名称设置给定类型的字段 /// /// /// public void E(string name, object value) { foreach (var item in Fields) { if (item.Name == name) { item.Field = value; } } } /// /// XFE字段管理器 /// public XFFManager() { Fields = new List(); } /// /// XFE字段管理器 /// /// 字段名称和其值 public XFFManager(params object[] nameAndValue) { Fields = new List(); for (int i = 0; i < nameAndValue.Length; i += 2) { Fields.Add(new XField() { Name = nameAndValue[i].ToString(), Field = nameAndValue[i + 1] }); } } } }