using System.Text;
using System.Xml.Linq;
namespace Data
{
public abstract class Define
{
public string defName;
public string label;
public string description;
public string packID;
///
/// 初始化方法,根据传入的 XML 元素 () 进行处理。
///
/// 包含定义信息的 XML 元素。
///
/// 返回一个布尔值:
/// - 如果返回 false,表示按照默认方式处理(依次对 XML 进行变量名识别和赋值)。
/// - 如果返回 true,表示使用自定义方式处理,不进行额外的默认处理。
///
///
///
/// 该方法的基类实现会自动识别并处理以下三个变量:
/// - defName
/// - label
/// - description
///
///
/// 如果需要覆盖默认行为,可以在派生类中重写此方法,并返回 true
/// 以指示框架跳过默认处理逻辑。
///
///
public virtual bool Init(XElement xmlDef)
{
defName = xmlDef.Element("defName")?.Value;
label = xmlDef.Element("label")?.Value;
description = xmlDef.Element("description")?.Value;
return false;
}
public override string ToString()
{
// 定义对齐格式(左对齐,固定宽度)
const int labelWidth = -15; // 标签左对齐,占15字符
const int valueWidth = -30; // 值左对齐,占30字符
var sb = new StringBuilder();
sb.AppendLine($"{"DefName:",labelWidth}{defName,valueWidth}");
sb.AppendLine($"{"Label:",labelWidth}{label,valueWidth}");
sb.AppendLine($"{"Description:",labelWidth}{description,valueWidth}");
sb.AppendLine($"{"PackID:",labelWidth}{packID,valueWidth}");
return sb.ToString();
}
}
}