58 lines
2.1 KiB
C#
58 lines
2.1 KiB
C#
|
||
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;
|
||
/// <summary>
|
||
/// 初始化方法,根据传入的 XML 元素 (<paramref name="xmlDef"/>) 进行处理。
|
||
/// </summary>
|
||
/// <param name="xmlDef">包含定义信息的 XML 元素。</param>
|
||
/// <returns>
|
||
/// 返回一个布尔值:
|
||
/// - 如果返回 <c>false</c>,表示按照默认方式处理(依次对 XML 进行变量名识别和赋值)。
|
||
/// - 如果返回 <c>true</c>,表示使用自定义方式处理,不进行额外的默认处理。
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// 该方法的基类实现会自动识别并处理以下三个变量:
|
||
/// - <c>defName</c>
|
||
/// - <c>label</c>
|
||
/// - <c>description</c>
|
||
/// </para>
|
||
/// <para>
|
||
/// 如果需要覆盖默认行为,可以在派生类中重写此方法,并返回 <c>true</c>
|
||
/// 以指示框架跳过默认处理逻辑。
|
||
/// </para>
|
||
/// </remarks>
|
||
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();
|
||
}
|
||
}
|
||
|
||
} |