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