Кроме пользовательских параметров, которые вы задаете для аннотации обычных типов С#, с помощью атрибута
AttributeUsage
можно определить способ применения этих атрибутов. Согласно документации правила вызова
атрибута. AttributeUsage
таковы:
[AttributeUsage(
validon,
AllowMultiple =
allomultlple,
Inherited =
inherited
)3
Как видите, позиционные параметры легко отличить от именованных. Я настоятельно рекомендую так документировать ваши атрибуты, чтобы у их пользователя не возникало необходимости обращаться к исходному коду класса атрибута для поиска открытых полей, доступных для чтения и записи, которые могут применяться как именованные атрибуты.