Class 'attribute class' marked attribute is declared in 'enclosing class' which does not have public access.
The attribute attribute can only be applied to classes that are contained in public classes.
The following sample generates CS0604:
internal class BadAccessOnAttributeClass { // CS0604, change internal to public [attribute] public class BadAccessOnNestedAttributeClass { } }