Example #1
0
        private INamedTypeSymbol FindClassesWithNameAndAttribute(string fullName, string attribute)
        {
            var name = fullName.Split('.').Last();

            foreach (var comp in projectCompilations.Values)
            {
                INamedTypeSymbol template = comp.GetSymbolsWithName(x => x.Equals(name, System.StringComparison.Ordinal))
                                            .OfType <INamedTypeSymbol>()
                                            .Where(x => NamespaceUtility.IsPartOf(x.ToDisplayString(), fullName))
                                            .FirstOrDefault(x => x.GetAttributes()
                                                            .Any(y => y.AttributeClass.Name.Equals(attribute)));
                if (template != null)
                {
                    return(template);
                }
            }
            return(null);
        }
 //TODO: Not clean. Build a NamespaceUtility that can handle namespaces correctly. See also: Namespace operations in RoslynIntrospector
 internal bool IsSelfReferencingPartial(string partial)
 {
     return(NamespaceUtility.IsPartOf(string.Concat(Namespace, ".", Name), partial));
 }