Viji
@Viji
DevOps Engineer

Изменяют ли поведение классов или методов применяемые аттрибуты?

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

[DynamoDBTable("clients-table")]
    public class SetArchive : OperationBase
    {
        [DynamoDBRangeKey]
        public Guid Id { get; set; }

        [DynamoDBProperty(typeof(EnumConverter<Archived>))]
        public Archived Archived { get; set; }
    }


и типичный:

[Serializable()]
public class TestSimpleObject  {

    public int member1;
    public string member2;
    public string member3;
    public double member4;
    public TestSimpleObject() {

        member1 = 11;
        member2 = "hello";
        member3 = "hello";
        member4 = 3.14159265;
    }
}


в первом случае public class SetArchive : OperationBase вообще не имеет смысла без аттр-та [DynamoDBTable("clients-table")], но что на самом деле там происходит...понятно, что он говорит хранить поля Id и Archived таблицы clients-table в классе setArchive... но что там реально происходит с этим классом - непонятно. Как будто он себе еще одного aws DynamoDBTable предка добавляет из этого аттрибута.

во втором случае вроде легче - он специфицирует формат хранения обьекта и его свойств в особом текстовом виде... но как это происходит - мрак.

вроде как эти аттрибуты - сигнал компилятору, как обрабатывать эти классы - может кто сможет обьяснить?
  • Вопрос задан
  • 64 просмотра
Пригласить эксперта
Ответы на вопрос 1
Атрибуты на поведение класса не влияют, но какие-нибудь сторонние штуки могут эти атрибуты читать и менять поведение (например это может делать Fody)

Но обычно всё-таки атрибуты ничего не делают, а просто предоставляют какую-то доп инфу другим классам:
Serializable - сообщает инфу сериализатору
DynamoDBTable и прочие - сообщают инфу ОРМ-ке или что там.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы