private void AddLinkToCallMethod(string memberName, MethodReference method)
        {
            if (method is GenericInstanceMethod genericMethod)
            {
                genericMethod.GenericArguments
                .ForEach(genericArg => linkHandler.AddLinkToType(memberName, genericArg));
            }

            TypeReference declaringType = method.DeclaringType;

            if (IgnoredTypes.IsIgnoredSystemType(declaringType))
            {
                // Ignore "System" and "Microsoft" namespaces for now
                return;
            }

            string methodName = Name.GetMethodFullName(method);

            if (Name.IsCompilerGenerated(methodName))
            {
                return;
            }

            linkHandler.AddLink(memberName, methodName, NodeData.MemberType);

            TypeReference returnType = method.ReturnType;

            linkHandler.AddLinkToType(memberName, returnType);

            method.Parameters
            .Select(parameter => parameter.ParameterType)
            .ForEach(parameterType => linkHandler.AddLinkToType(memberName, parameterType));
        }
Ejemplo n.º 2
0
 private static bool IsIgnoredReference(TypeReference targetType)
 {
     return(targetType.FullName == "System.Void" ||
            targetType.IsGenericParameter ||
            IgnoredTypes.IsIgnoredSystemType(targetType) ||
            IsGenericTypeArgument(targetType) ||
            targetType is ByReferenceType refType && refType.ElementType.IsGenericParameter);
 }
Ejemplo n.º 3
0
 private static IReadOnlyList <AssemblyNameReference> GetExternalAssemblyReferences(
     AssemblyDefinition assembly,
     IReadOnlyList <string> internalModules)
 {
     return(assembly.MainModule.AssemblyReferences
            .Where(reference => !IgnoredTypes.IsSystemIgnoredModuleName(reference.Name))
            .Where(reference => !internalModules.Contains(Name.GetModuleName(reference)))
            .ToList());
 }
Ejemplo n.º 4
0
 private static bool IsIgnoredTargetMember(IMemberDefinition memberInfo)
 {
     return(IgnoredTypes.IsIgnoredSystemType(memberInfo.DeclaringType) ||
            IsGenericTypeArgument(memberInfo.DeclaringType));
 }