using System; using System.Collections.Generic; using System.Reflection; namespace NBF { public static class AttributeHelper { // 获取特定嵌套类中带有InputIconAttribute的常量字段 public static Dictionary> GetNestedClassInputIconFields() { var result = new Dictionary>(); // 获取InputDef类型 Type inputDefType = typeof(NBF.InputDef); // 检查UI类 Type uiType = inputDefType.GetNestedType("UI"); if (uiType != null) { var uiFields = GetInputIconFieldsFromType(uiType); if (uiFields.Count > 0) { result.Add("UI", uiFields); } } // 检查Player类 Type playerType = inputDefType.GetNestedType("Player"); if (playerType != null) { var playerFields = GetInputIconFieldsFromType(playerType); if (playerFields.Count > 0) { result.Add("Player", playerFields); } } return result; } // 从特定类型获取带有InputIconAttribute的常量字段 private static List GetInputIconFieldsFromType(Type type) { List result = new List(); // 只获取公共常量字段 FieldInfo[] fields = type.GetFields( BindingFlags.Public | BindingFlags.Static | BindingFlags.FlattenHierarchy); foreach (FieldInfo field in fields) { // 检查是否是常量且带有InputIconAttribute if (field.IsLiteral && !field.IsInitOnly && Attribute.IsDefined(field, typeof(InputIconAttribute))) { result.Add(field); } } return result; } } }