using System; namespace XericUI.ReflectionUIGenerator { /// /// 字段编组特性 /// 将多个字段标记为属于同一个编组路径,共享一个 UI 组件实例 /// /// 编组不携带 Tag,Tag 由 [XuiavrgFieldTag] 单独标记。 /// 使用示例: /// [XuiavrgFieldEntryGroup("field1")] /// [XuiavrgFieldTag(XuiavrgFieldTag.Label)] /// public string fieldLabel = "速度"; /// /// [XuiavrgFieldEntryGroup("field1")] /// [XuiavrgFieldTag(XuiavrgFieldTag.Context)] /// public float fieldValue = 0.1f; /// /// [XuiavrgFieldEntryGroup("field1")] /// [XuiavrgFieldTag(XuiavrgFieldTag.Unit)] /// public string fieldUnit = "m/s"; /// /// 上述三个字段将合并为一个 Entry,分别绑定到 UI 组件上 Label、Context、Unit 三个子元素 /// [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = false)] public class XuiavrgFieldEntryGroupAttribute : Attribute, IXuiavrgAttribute { /// 编组路径,以 "/" 分割层级。同一 groupPath 的字段合并到一个 Entry public readonly string GroupPath; /// /// 创建字段编组标记 /// /// 编组路径 (如 "field1" 或 "Stats/Speed") public XuiavrgFieldEntryGroupAttribute(string groupPath) { GroupPath = groupPath; } public void BindMetaData(AvrgMemberMetaData metaData) { metaData.GroupPath = GroupPath; // 不设置 Tag/TagIndex,留给 [XuiavrgFieldTag] 单独处理 } } }