Коллекция атрибутов С#

У меня есть определенная коллекция встроенных атрибутов (например, System.Runtime.Serialization.SerializableAttribute), которые я хочу применить к определенной коллекции классов

Можно ли объединить эти атрибуты в один? Я не хочу применять все их ко всем моим классам явно (коллекция attibute может измениться в процессе разработки)

Я хочу один атрибут, например

public class MyClassAttribute: System.Attribute { ... }

который я мог бы легко применить к моим классам

[MyClass]
public class SampleClass { ... }

и это приведет к тому, что SampleClass будет иметь атрибут Serializable и другие. Благодаря

Ответ 1

Нет, это не так. На самом деле, [Serializable] особенно примечателен, потому что в компиляторе различное отношение - он не написан как атрибут, а как необработанный флаг (время выполнения просто ложно, если вы спросите "имеет ли он атрибут [Serializable]", - он проверяет флаг на тип и возвращает то, что вы ожидаете увидеть, хотя это не правда).

Ответ 2

Я не думаю, что это возможно из коробки, но вы можете использовать Mono.Cecil для изменения типов в своей сборке в шаг после сборки, удаление атрибута коллекции и добавление других.

Ответ 3

Интересный вопрос. Я думаю, что многие встроенные атрибуты запечатаны, поэтому это может быть невозможно.