Атрибуты вставляются в метаданные и хранятся там до тех пор, пока некоторый пользовательский код не запросит их, используя отражение.Они не влияют на производительность, единственное, что они увеличивают таблицы метаданных сборки.Но это больше проблема дизайна, обычно вы не должны были попадать в этот сценарий.Если вы украсите некоторый класс атрибутом, независимым от платформы, таким как [Serializable]
, то вы скажете: «Хорошо, этот тип может быть сериализован однажды, независимо от того, как и где вы хотите его использовать».И это довольно хорошо, но если вы украсите тот же класс атрибутом для конкретной платформы, таким как [DataContract]
, то вы как бы говорите миру: «Хорошо, это DTO WCF и предназначено для использования в работе».контракты».Кроме того, вы связываете класс с DataContractSerializer и даже больше, если вы используете DataContract
, то вам также нужно явно определить [DataMember]
s.
Вывод - обычно вы не должны были идти этим путем,Подумайте о рефакторинге вашей модели программного обеспечения.