private static AssemblyTypeData ReadType(TypeDefinition type, BaseDataContainer dir)
        {
            AssemblyTypeData typeData = new AssemblyTypeData(type.FullName, dir);

            foreach (var method in type.Methods)
            {
                AssemblyMethodData methodData = ReadMethod(method, typeData);
                if (methodData != null)
                {
                    typeData.methods.Add(methodData);
                }
            }
            foreach (var nestedType in type.NestedTypes)
            {
                AssemblyTypeData nestedTypeData = ReadType(nestedType, dir);
                if (nestedTypeData != null)
                {
                    typeData.nestedTypes.Add(nestedTypeData);
                }
            }
            if (typeData.nestedTypes.Count == 0 && typeData.methods.Count == 0)
            {
                return(null);
            }
            return(typeData);
        }
        public static AssemblyMethodData ReadMethod(MethodDefinition method, AssemblyTypeData typeData)
        {
            if (!method.HasBody)
            {
                return(null);
            }
            AssemblyMethodData methodData = new AssemblyMethodData(method.Name, typeData);
            var instructions = method.Body.Instructions;

            for (int i = 0; i < instructions.Count; i++)
            {
                if (instructions[i].OpCode == OpCodes.Ldstr)
                {
                    string text = (string)instructions[i].Operand;
                    if (!TextFinder.TextFinder.IsValidText(text))
                    {
                        continue;
                    }
                    AssemblyTextEntry textEntry = new AssemblyTextEntry(i, text, null, methodData);
                    methodData.texts.Add(textEntry);
                }
            }
            if (methodData.texts.Count == 0)
            {
                return(null);
            }
            return(methodData);
        }
Ejemplo n.º 3
0
        private void changeConentDescription(DescriptionMode descriptionMode)
        {
            componentsDescriptionMode = descriptionMode;

            for (int i = 0; i < asmContentTree.Items.Count; i++)
            {
                TreeViewItem typeItem = asmContentTree.Items[i] as TreeViewItem;
                if (typeItem.Header is AssemblyTypeData)
                {
                    AssemblyTypeData type = typeItem.Header as AssemblyTypeData;
                    type.TypeDescriptionMode = descriptionMode;

                    typeItem.Header = null;
                    typeItem.Header = type;
                }

                for (int j = 0; j < typeItem.Items.Count; j++)
                {
                    TreeViewItem methodItem = typeItem.Items[j] as TreeViewItem;
                    if (methodItem.Header is AssemblyMethodData)
                    {
                        AssemblyMethodData method = methodItem.Header as AssemblyMethodData;
                        method.MethodDescriptionMode = descriptionMode;

                        methodItem.Header = null;
                        methodItem.Header = method;
                    }
                }
            }
        }