Коллекция атрибутов С#
У меня есть определенная коллекция встроенных атрибутов (например, System.Runtime.Serialization.SerializableAttribute), которые я хочу применить к определенной коллекции классов
Можно ли объединить эти атрибуты в один? Я не хочу применять все их ко всем моим классам явно (коллекция attibute может измениться в процессе разработки)
Я хочу один атрибут, например
public class MyClassAttribute: System.Attribute { ... }
который я мог бы легко применить к моим классам
[MyClass]
public class SampleClass { ... }
и это приведет к тому, что SampleClass будет иметь атрибут Serializable и другие. Благодаря
Ответы
Ответ 1
Нет, это не так. На самом деле, [Serializable]
особенно примечателен, потому что в компиляторе различное отношение - он не написан как атрибут, а как необработанный флаг (время выполнения просто ложно, если вы спросите "имеет ли он атрибут [Serializable]
", - он проверяет флаг на тип и возвращает то, что вы ожидаете увидеть, хотя это не правда).
Ответ 2
Я не думаю, что это возможно из коробки, но вы можете использовать Mono.Cecil для изменения типов в своей сборке в шаг после сборки, удаление атрибута коллекции и добавление других.
Ответ 3
Интересный вопрос. Я думаю, что многие встроенные атрибуты запечатаны, поэтому это может быть невозможно.