При попытке применить атрибут System.AttributeUsage
к классу Visual Studio покажет ошибку "Attribute 'AttributeUsage' is only valid on classes derived from System.Attribute"
. Можно ли указать такое требование для пользовательского атрибута?
Представьте себе класс атрибута CommandAttribute
, в котором будет указано имя команды. Он должен присутствовать только в классах, которые реализуют ICommand
, чтобы мы могли гарантировать, что такие методы, как ExecuteCommand(...)
, существуют в классе.
Конечно, я могу использовать отражение, чтобы убедиться, что применяемые классы реализуют интерфейс во время выполнения, но в идеале мы могли бы применить это во время компиляции.