コード例 #1
0
ファイル: XamlClassParser.cs プロジェクト: highzion/Granular
        public static ClassDefinition Parse(XamlElement element, ITypeParser typeParser)
        {
            string fullName = GetClassFullName(element);

            if (fullName.IsNullOrEmpty())
            {
                return null;
            }

            string baseTypeName = typeParser.ParseTypeName(element.Name);

            IEnumerable<MemberDefinition> members = GetMembers(element, baseTypeName, typeParser).ToArray();

            return new ClassDefinition(GetTypeName(fullName), GetTypeNamespace(fullName), baseTypeName, members);
        }
コード例 #2
0
        public static ClassDefinition Parse(XamlElement element, ITypeParser typeParser)
        {
            string fullName = GetClassFullName(element);

            if (fullName.IsNullOrEmpty())
            {
                return(null);
            }

            string baseTypeName = typeParser.ParseTypeName(element.Name);

            IEnumerable <MemberDefinition> members = GetMembers(element, baseTypeName, typeParser).ToArray();

            return(new ClassDefinition(GetTypeName(fullName), GetTypeNamespace(fullName), baseTypeName, members));
        }
コード例 #3
0
ファイル: XamlClassParser.cs プロジェクト: highzion/Granular
        private static IEnumerable<MemberDefinition> GetMembers(XamlElement element, string elementTypeName, ITypeParser typeParser)
        {
            if (elementTypeName == "System.Windows.ResourceDictionary")
            {
                yield break;
            }

            XamlMember nameDirective = element.Directives.FirstOrDefault(directive => directive.Name == XamlLanguage.NameDirective);

            if (nameDirective != null)
            {
                yield return new MemberDefinition((string)nameDirective.GetSingleValue(), elementTypeName);
            }

            foreach (XamlElement child in element.Values.OfType<XamlElement>().Concat(element.Members.SelectMany(member => member.Values.OfType<XamlElement>())))
            {
                string childTypeName = typeParser.ParseTypeName(child.Name);

                foreach (MemberDefinition member in GetMembers(child, childTypeName, typeParser))
                {
                    yield return member;
                }
            }
        }
コード例 #4
0
        private static IEnumerable <MemberDefinition> GetMembers(XamlElement element, string elementTypeName, ITypeParser typeParser)
        {
            if (elementTypeName == "System.Windows.ResourceDictionary")
            {
                yield break;
            }

            XamlMember nameDirective = element.Directives.FirstOrDefault(directive => directive.Name == XamlLanguage.NameDirective);

            if (nameDirective != null)
            {
                yield return(new MemberDefinition((string)nameDirective.GetSingleValue(), elementTypeName));
            }

            foreach (XamlElement child in element.Values.OfType <XamlElement>().Concat(element.Members.SelectMany(member => member.Values.OfType <XamlElement>())))
            {
                string childTypeName = typeParser.ParseTypeName(child.Name);

                foreach (MemberDefinition member in GetMembers(child, childTypeName, typeParser))
                {
                    yield return(member);
                }
            }
        }
コード例 #5
0
ファイル: XamlClassParser.cs プロジェクト: diab0l/Granular
        private static IEnumerable<MemberDefinition> GetMembers(XamlElement element, string elementTypeName, ITypeParser typeParser)
        {
            if (elementTypeName == "System.Windows.ResourceDictionary")
            {
                yield break;
            }

            XamlAttribute nameAttribute = element.Attributes.FirstOrDefault(attribute => attribute.Name == XamlLanguage.NameDirective);

            if (nameAttribute != null)
            {
                yield return new MemberDefinition((string)nameAttribute.Value, elementTypeName);
            }

            foreach (XamlElement child in element.Children)
            {
                string childTypeName = typeParser.ParseTypeName(child.Name.IsMemberName ? child.Name.ContainingTypeName : child.Name);

                foreach (MemberDefinition member in GetMembers(child, childTypeName, typeParser))
                {
                    yield return member;
                }
            }
        }