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)); }