예제 #1
0
        private List <GenericTypeDeclaration> GetMatchingGenerics(ReferenceType referenceType)
        {
            if (referenceType.Identifiers.Count() != 1)
            {
                return(new List <GenericTypeDeclaration>());
            }
            var parentMethod = referenceType.NearestAncestorOfType <MethodDeclaration>();

            var methodGenerics = parentMethod?.GenericTypeDeclarations.Where(x => x.Name == referenceType.Identifiers.First().Text).ToList() ?? new List <GenericTypeDeclaration>();

            if (methodGenerics.Any())
            {
                return(methodGenerics);
            }
            var parentClass = referenceType.NearestAncestorOfType <ClassDeclaration>();

            if (parentClass == null || IsStatic(referenceType))
            {
                return(new List <GenericTypeDeclaration>());
            }

            var classGenerics = parentClass.GenericTypeDeclarations.Where(x => x.Name == referenceType.Identifiers.First().Text).ToList() ?? new List <GenericTypeDeclaration>();

            return(classGenerics);
        }