/// <summary> /// Возвращает расширенные метаданные класса /// </summary> /// <param name="classInfo">Исходные метаданные класса</param> /// <returns>Расширенные метаданные класса</returns> public ReflectionClassInfoEx GetClassInfoEx(XPClassInfo classInfo) { ReflectionClassInfoEx result; if (!classesByType.TryGetValue(classInfo.ClassType, out result)) { result = new ReflectionClassInfoEx(classInfo, this); classesByType.Add(classInfo.ClassType, result); } return result; }
/// <summary> /// Конструктор /// </summary> /// <param name="classInfo">Исходные метаданные класса</param> /// <param name="dictionary">Справочник расширенных метаданных</param> public ReflectionClassInfoEx(XPClassInfo classInfo, ReflectionDictionaryEx dictionary) { this.sourceInfo = classInfo; this.dictionary = dictionary; this.baseClassEx = classInfo.BaseClass != null ? dictionary.GetClassInfoEx(classInfo.BaseClass) : null; // Все атрибуты класса, включая наследованные и однотипные object[] attributes = ClassType.GetCustomAttributes(true); allAttributes = new Attribute[attributes != null ? attributes.Length : 0]; if (attributes != null && attributes.Length > 0) Array.Copy(attributes, allAttributes, attributes.Length); }