ICSharpCode.ILSpy.TreeNodes.DerivedTypesTreeNode.FindDerivedTypes C# (CSharp) Method

FindDerivedTypes() static private method

static private FindDerivedTypes ( TypeDefinition type, ModuleDefinition assemblies ) : IEnumerable
type TypeDefinition
assemblies ModuleDefinition
return IEnumerable
        internal static IEnumerable<DerivedTypesEntryNode> FindDerivedTypes(TypeDefinition type, ModuleDefinition[] assemblies)
        {
            foreach (ModuleDefinition module in assemblies)
            {
                foreach (TypeDefinition td in TreeTraversal.PreOrder(module.Types, t => t.NestedTypes))
                {
                    if (type.IsInterface && td.HasInterfaces)
                    {
                        foreach (TypeReference typeRef in td.Interfaces)
                        {
                            if (IsSameType(typeRef, type))
                                yield return new DerivedTypesEntryNode(td, assemblies);
                        }
                    }
                    else if (!type.IsInterface && td.BaseType != null && IsSameType(td.BaseType, type))
                    {
                        yield return new DerivedTypesEntryNode(td, assemblies);
                    }
                }
            }
        }

Usage Example

Ejemplo n.º 1
0
        IEnumerable <ILSpyTreeNode> FetchChildren(CancellationToken ct)
        {
            // FetchChildren() runs on the main thread; but the enumerator will be consumed on a background thread
            var assemblies = list.GetAssemblies().Select(node => node.GetPEFileOrNull()).Where(asm => asm != null).ToArray();

            return(DerivedTypesTreeNode.FindDerivedTypes(list, type, assemblies, ct));
        }
All Usage Examples Of ICSharpCode.ILSpy.TreeNodes.DerivedTypesTreeNode::FindDerivedTypes