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] });
}
}
}
}