private static void LookupMetadataDefinitions( MetadataReader reader, NamespaceDefinition namespaceDefinition, OrderPreservingMultiDictionary<string, MetadataDefinition> definitionMap) { foreach (var child in namespaceDefinition.NamespaceDefinitions) { var definition = MetadataDefinition.Create(reader, child); definitionMap.Add(definition.Name, definition); } foreach (var child in namespaceDefinition.TypeDefinitions) { var typeDefinition = reader.GetTypeDefinition(child); if (IsPublic(typeDefinition.Attributes)) { var definition = MetadataDefinition.Create(reader, typeDefinition); definitionMap.Add(definition.Name, definition); } } }
private static void GenerateMetadataNodes( MetadataReader reader, NamespaceDefinition globalNamespace, List<Node> unsortedNodes) { var definitionMap = OrderPreservingMultiDictionary<string, MetadataDefinition>.GetInstance(); try { LookupMetadataDefinitions(reader, globalNamespace, definitionMap); foreach (var kvp in definitionMap) { if (UnicodeCharacterUtilities.IsValidIdentifier(kvp.Key)) { GenerateMetadataNodes(reader, kvp.Key, 0 /*index of root node*/, kvp.Value, unsortedNodes); } } } finally { definitionMap.Free(); } }