вроде бы простой момент, но до конца не понятный. Пишут, что аттрибут перед классом добавляет ему метаданные, но на практике выходит, что эти метаданные могут изменять то, как обьект хранится или взаимодействует с другими обьектами - два примера
[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 предка добавляет из этого аттрибута.
во втором случае вроде легче - он специфицирует формат хранения обьекта и его свойств в особом текстовом виде... но как это происходит - мрак.
вроде как эти аттрибуты - сигнал компилятору, как обрабатывать эти классы - может кто сможет обьяснить?