コード例 #1
0
 public ApiParseableProperty(Expression <Func <T, string> > expr, ElementLevel level, string path, string attribute)
 {
     Expr          = expr;
     Path          = path;
     Level         = level;
     AttributeName = attribute;
 }
コード例 #2
0
ファイル: ObjectViewModel.cs プロジェクト: ygoe/CecilExplorer
 private bool TryGetElementLevel(out ElementLevel level)
 {
     level = default(ElementLevel);
     if (TheObject is Mono.Cecil.AssemblyDefinition ||
         TheObject is Mono.Cecil.AssemblyNameReference)
     {
         level = ElementLevel.Assembly;
         return(true);
     }
     if (TheObject is Mono.Cecil.ModuleDefinition ||
         TheObject is Mono.Cecil.ModuleReference)
     {
         level = ElementLevel.Module;
         return(true);
     }
     if (TheObject is Mono.Cecil.TypeDefinition ||
         TheObject is Mono.Cecil.TypeReference)
     {
         level = ElementLevel.Type;
         return(true);
     }
     if (TheObject is Mono.Cecil.IMemberDefinition ||
         TheObject is Mono.Cecil.MemberReference)
     {
         level = ElementLevel.Member;
         return(true);
     }
     return(false);
 }
コード例 #3
0
 protected override bool HasLevel(FrameworkElement e, ElementLevel level)
 {
     if (e.Tag is not string tag || string.IsNullOrWhiteSpace(tag))
     {
         return(base.HasLevel(e, level));
     }
     tag = tag.ToLower();
     return(level switch
     {
         ElementLevel.Specification => tag[0] == 'n' || base.HasLevel(e, level),
         ElementLevel.Mandatory => tag[0] == 'o' || base.HasLevel(e, level),
         _ => base.HasLevel(e, level)
     });
コード例 #4
0
        public string GetXmlValue(XDocument doc, ElementLevel level, string path, string attributeName)
        {
            // Get namespaces
            var ns       = doc.Root.GetDefaultNamespace();
            var prefix   = doc.Root.GetNamespaceOfPrefix("dxp");
            var gaPrefix = doc.Root.GetNamespaceOfPrefix("ga");

            if (level == ElementLevel.FeedLevel)
            {
                return(GetXmlTopValue(doc, path));
            }

            // Elementlevel is entry level
            var nodes = doc.Root.Descendants(ns + "entry");

            var value = "";

            foreach (var node in nodes)
            {
                // Try finding properties first
                var xmlNode = node.Elements(prefix + "property")
                              .Where(x => x.Attribute("name").Value.ToLower() == path.ToLower());

                // Then metrics
                if (xmlNode.Any() == false)
                {
                    xmlNode = node.Elements(prefix + "metric")
                              .Where(x => x.Attribute("name").Value.ToLower() == path.ToLower());
                }

                // Then dimensions
                if (xmlNode.Any() == false)
                {
                    xmlNode = node.Elements(prefix + "dimension")
                              .Where(x => x.Attribute("name").Value.ToLower() == path.ToLower());
                }

                if (xmlNode.Any() == false)
                {
                    return(string.Empty);
                }

                value = xmlNode.First().Attribute(attributeName).Value;
            }

            return(value);
        }
コード例 #5
0
ファイル: ObjectViewModel.cs プロジェクト: ygoe/CecilExplorer
        public ObjectViewModel(string name, object theObject, Type type, ImageSource icon, Brush valueColor, ElementLevel lastElementLevel)
        {
            this.icon = icon;
            Name      = name;
            TheObject = theObject;

            elementLevel = lastElementLevel;
            ElementLevel level;

            if (TryGetElementLevel(out level))
            {
                elementLevel         = level;
                IsHigherElementLevel = elementLevel < lastElementLevel;
            }

            Type = FormatType(type);
            if (TheObject != null &&
                TheObject.GetType() != type)
            {
                Type += " {" + FormatType(TheObject.GetType()) + "}";
                if (typeof(Mono.Cecil.MemberReference).IsAssignableFrom(type) &&
                    typeof(Mono.Cecil.IMemberDefinition).IsAssignableFrom(TheObject.GetType()))
                {
                    IsDefinitionForReference = true;
                }
            }
            SetValue();
            if (valueColor != null)
            {
                ValueColor = valueColor;
            }
            if (IsDefinitionForReference)
            {
                ValueColor = Brushes.Green;
            }
            if (IsHigherElementLevel)
            {
                ValueColor = Brushes.DarkViolet;
            }
            LazyLoading = canLoadChildren;
        }
コード例 #6
0
 public void Map(Expression <Func <T, string> > exp, string path, ElementLevel level, string attribute = "value")
 {
     ParseMap.Add(new ApiParseableProperty <T>(exp, level, path, attribute));
 }
コード例 #7
0
 public ElementInfo(string name, Type type, ElementLevel level)
 {
     Name  = name;
     Type  = type;
     Level = level;
 }