Exemplo n.º 1
0
        private static GenObject GetDescendentContext(GenObject genObject, string className, ISubClassBase exclude = null)
        {
            var subClass = genObject.GetSubClass(className);

            if (subClass != null)
            {
                if (subClass.Definition.SubClass.IsInheritor(className))
                {
                    return(subClass.Count == 0 ? null : subClass[0]);
                }
                return(null);
            }

            foreach (var s in genObject.SubClass)
            {
                var sc = genObject.GetSubClass(s.ClassId);
                if (sc == exclude)
                {
                    continue;
                }
                if (sc.Definition.SubClass.IsInheritor(className))
                {
                    return(sc.Count == 0 ? null : sc[0]);
                }
                var descendentContext = sc.Count == 0 ? null : GetDescendentContext(sc[0], className);
                if (descendentContext != null &&
                    descendentContext.ClassName.Equals(className, StringComparison.InvariantCultureIgnoreCase))
                {
                    return(descendentContext);
                }
            }
            return(genObject);
        }