private AttributeCollection(ITypeSymbolProvider symbolProvider, TypeSymbolLocatorCache locatorCache, ISymbol sourceSymbol) { var compilation = (sourceSymbol.ContainingAssembly as ISourceAssemblySymbol)?.Compilation ?? symbolProvider.Source.DeclaringCompilation; _symbolLocator = locatorCache.GetLocator(compilation); ContainingSymbol = sourceSymbol; _attributes = sourceSymbol.GetAttributes(); (AttributeLocations, Attributes) = GetAttributeLocations(); }
public static AttributeCollection?CreateCollection(ITypeSymbolProvider provider, TypeSymbolLocatorCache locatorCache, ISymbol sourceSymbol) { if (!sourceSymbol.Locations.All(x => x.IsInSource)) { return(null); } return(new AttributeCollection(provider, locatorCache, sourceSymbol)); }