Вообще говоря, вы не можете «объединять» атрибуты, потому что атрибуты не выполняют код. Атрибуты являются только маркерами. Как "этот метод отмечен красным и синим". Затем появится другой код: один ищет все красные метки и что-то делает, а другой ищет все синие метки и делает что-то еще. Создание пурпурной метки путем слияния красного и синего просто запутает код, ищущий разметку, потому что фиолетовый не является ни красным, ни синим.
Тем не менее, AOP (аспектно-ориентированное программирование) доступно от третьих лиц для C # и означает атрибуты (называемые аспектами, потому что они делают больше, чем обычные атрибуты маркера) может выполнять код.
Вы можете написать аспект, который украшает метод, в котором он находится, с нужными вам атрибутами, так что вы можете написать его один раз (и протестировать), а затем установить его для каждого метода, не беспокоясь о том, чтобы забыть атрибут или установить его. неправильно.
Существует несколько провайдеров AOP для C #, наиболее популярным из которых является PostSharp. Вы можете увидеть, как написать аспект, который добавляет атрибуты к классу или методу во время компиляции с PostSharp здесь .