📄
Core/MemberCollectors/AttributedMembersCollector.cs
using System.Collections.Generic; using System.Linq; using Microsoft.CodeAnalysis; namespace Reacher.MemberCollectors; internal sealed class AttributedMembersCollector(string attributeName) : MembersCollector() { public static IEnumerable<ISymbol> CollectMembers(string attributeName, IEnumerable<Compilation> compilations) { var collector = new AttributedMembersCollector(attributeName); compilations.Accept(collector); return collector.Members; } protected override bool ShouldMemberBeIncluded(ISymbol member) => member .GetAttributes() .Any(attr => attr.AttributeClass?.Name is string name && (name == attributeName || name == attributeName + "Attribute") ); }