private void AddLinksToBaseTypes(TypeData typeData) { if (typeData.IsAsyncStateType) { // Internal async/await helper type, return; } TypeDefinition type = typeData.Type; NodeData sourceNode = typeData.Node; try { TypeReference baseType = type.BaseType; if (baseType != null && baseType.FullName != "System.Object") { linkHandler.AddLinkToType(sourceNode.Name, baseType); } type.Interfaces .ForEach(interfaceType => linkHandler.AddLinkToType(sourceNode.Name, interfaceType.InterfaceType)); } catch (Exception e) { Log.Exception(e, $"Failed to add base type for {type} in {sourceNode.Name}"); } }
private void AddMemberLinks(string sourceMemberName, IMemberDefinition member) { try { switch (member) { case FieldDefinition field: linkHandler.AddLinkToType(sourceMemberName, field.FieldType); break; case PropertyDefinition property: linkHandler.AddLinkToType(sourceMemberName, property.PropertyType); break; case EventDefinition eventInfo: linkHandler.AddLinkToType(sourceMemberName, eventInfo.EventType); break; case MethodDefinition method: methodParser.AddMethodLinks(sourceMemberName, method); break; default: Log.Warn($"Unknown member type {member.DeclaringType}.{member.Name}"); break; } } catch (Exception e) { Log.Exception(e, $"Failed to links for member {member} in {sourceMemberName}"); } }