private void FireOnEntitySelected(DisassembledEntity disassembledEntity) { var theEvent = OnEntitySelected; if (theEvent != null) { theEvent(this, new DisassembledEntityEventArgs(disassembledEntity)); } }
public void UpdateBreadcrumbs(DisassembledEntity selectedEntity) { Breadcrumbs.Clear(); var current = selectedEntity; while (current != null) { Breadcrumbs.Insert(0, current); current = current.Parent; } }
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); } }
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); }
public DisassembledEntityEventArgs(DisassembledEntity entity) { Entity = entity; }
public ElementNodeViewModel(DisassembledEntity disassembledEntity) { Model = disassembledEntity; }