コード例 #1
0
        private void FireOnEntitySelected(DisassembledEntity disassembledEntity)
        {
            var theEvent = OnEntitySelected;

            if (theEvent != null)
            {
                theEvent(this, new DisassembledEntityEventArgs(disassembledEntity));
            }
        }
コード例 #2
0
ファイル: SilViewModel.cs プロジェクト: lance2088/sil
        public void UpdateBreadcrumbs(DisassembledEntity selectedEntity)
        {
            Breadcrumbs.Clear();

            var current = selectedEntity;

            while (current != null)
            {
                Breadcrumbs.Insert(0, current);
                current = current.Parent;
            }
        }
コード例 #3
0
        public static void SearchAssembly()
        {
            //  Disassemble the assembly.
            DisassembledAssembly disassembledAssembly = Disassembler.DisassembleAssembly(@"SomeAssembly.dll");

            //  Create a disassembly target that targets the interface named 'ISomeInterface'.
            DisassemblyTarget target = new DisassemblyTarget(DisassemblyTargetType.Interface, @"SimeAssembly.ISomeInterface");

            //  Search for the interface.
            DisassembledEntity entity = disassembledAssembly.FindDisassembledEntity(target);

            //  If we found it, show the IL.
            if (entity != null)
            {
                Console.WriteLine(entity.RawIL);
            }
        }
コード例 #4
0
ファイル: DocumentViewModel.cs プロジェクト: lance2088/sil
        private ElementNodeViewModel BuildElementNode(DisassembledEntity entity)
        {
            //  TODO sort out the orders

            var node = new ElementNodeViewModel(entity);

            node.Name        = entity.FullName;
            node.DisplayName = entity.ShortName;
            node.Content     = entity.RawIL;
            if (entity is DisassembledClass)
            {
                node.ElementNodeType = ElementNodeType.Class;
            }
            else if (entity is DisassembledAssembly)
            {
                node.ElementNodeType = ElementNodeType.Assembly;
            }
            else if (entity is DisassembledDelegate)
            {
                node.ElementNodeType = ElementNodeType.Delegate;
            }
            else if (entity is DisassembledEnumeration)
            {
                node.ElementNodeType = ElementNodeType.Enum;
            }
            else if (entity is DisassembledField)
            {
                node.ElementNodeType = ElementNodeType.Field;
            }
            else if (entity is DisassembledInterface)
            {
                node.ElementNodeType = ElementNodeType.Interface;
            }
            else if (entity is DisassembledMethod)
            {
                node.ElementNodeType = ElementNodeType.Method;
            }
            else if (entity is DisassembledStructure)
            {
                node.ElementNodeType = ElementNodeType.Struct;
            }
            else if (entity is DisassembledProperty)
            {
                node.ElementNodeType = ElementNodeType.Property;
            }
            else if (entity is DisassembledEvent)
            {
                node.ElementNodeType = ElementNodeType.Event;
            }


            var ilClass = entity as DisassembledIlClass;

            if (ilClass != null)
            {
                ilClass.Fields.OrderBy(c => c.ShortName).ToList().ForEach(f => node.Nodes.Add(BuildElementNode(f)));
                ilClass.Methods.OrderBy(c => c.ShortName).ToList().ForEach(f => node.Nodes.Add(BuildElementNode(f)));
                ilClass.Properties.OrderBy(c => c.ShortName).ToList().ForEach(p => node.Nodes.Add(BuildElementNode(p)));
                ilClass.Events.OrderBy(c => c.ShortName).ToList().ForEach(p => node.Nodes.Add(BuildElementNode(p)));
                ilClass.Classes.OrderBy(c => c.ShortName).ToList().ForEach(f => node.Nodes.Add(BuildElementNode(f)));
                ilClass.Structures.OrderBy(c => c.ShortName).ToList().ForEach(f => node.Nodes.Add(BuildElementNode(f)));
                ilClass.Enumerations.OrderBy(c => c.ShortName).ToList().ForEach(f => node.Nodes.Add(BuildElementNode(f)));
                ilClass.Interfaces.OrderBy(c => c.ShortName).ToList().ForEach(f => node.Nodes.Add(BuildElementNode(f)));
                ilClass.Delegates.OrderBy(c => c.ShortName).ToList().ForEach(f => node.Nodes.Add(BuildElementNode(f)));
            }

            return(node);
        }
コード例 #5
0
 public DisassembledEntityEventArgs(DisassembledEntity entity)
 {
     Entity = entity;
 }
コード例 #6
0
ファイル: ElementNodeViewModel.cs プロジェクト: lance2088/sil
 public ElementNodeViewModel(DisassembledEntity disassembledEntity)
 {
     Model = disassembledEntity;
 }