установить значение атрибута во время выполнения - PullRequest
1 голос
/ 04 марта 2020

У меня есть пространство имен, содержащее несколько классов, один из классов, над которыми я работаю, содержит свойства, где каждый proprty имеет связанный с ним атрибут, такой как:

namespace Local.Business
{
    [DynamoDBTable("myTableName")]     
    public class Business
    {
        [DynamoDBHashKey("PK")] 
        public string MunId {get; set;}

        [DynamoDBRangeKey("SK")]
        public string Id {get; set;}

        [DynamoDBProperty("Dba")] 
        public string Dba {get; set;} 
    }
}

строка "myTableName «нужно определить во время выполнения (вызывая функцию или читая ее из свойства другого класса). Как мне этого добиться, пожалуйста?

Ответы [ 3 ]

0 голосов
/ 04 марта 2020

Установите в качестве значения имени таблицы пустую строку в файле класса:

[DynamoDBTable("")]

Во время выполнения используйте перегруженные функции на DynamoDBMapper для передачи DynamoDBMapperConfig, настроенного с помощью TableNameOverride

0 голосов
/ 08 марта 2020

На самом деле я удалил свойство таблицы и дал имя таблицы в запросе

 dynamoDBOperationConfig = new DynamoDBOperationConfig();
 dynamoDBOperationConfig.OverrideTableName = "tableName";
 string munId = "1";
 var search = dynamoDBcontext.QueryAsync<Business>(munId, dynamoDBOperationConfig);

, и все работает отлично, всем вам спасибо за помощь

0 голосов
/ 04 марта 2020

То, что вы пытаетесь сделать, изначально ошибочно. Вы вроде как я могу sh изменить атрибуты в некотором роде, иногда , но есть большая вероятность, что все, что потребляет атрибуты , не увидит изменения , что делает его совершенно бессмысленным.

По сути: вам нужно найти другой способ перенастройки DynamoDB во время выполнения. Это не так.


Для "своего рода я могу sh":

  • вы можете материализовать атрибуты, и если они ' изменяемый, измените копии, которые у вас есть; но когда другой код материализует атрибуты, они получат различные несвязанные версии , которые не будут иметь никаких изменений, которые вы внесли
  • там равно API, поддерживающий эту концепцию (System.ComponentModel), но: большинство потребителей атрибутов не используют этот API - это в основном просто инструменты привязки пользовательского интерфейса (например, PropertyGrid, DataGridView и др. * 1036). *) что бы это заметило - потому что они ожидают работы с такими вещами, как DataTable, которые требуют другого подхода к метаданным и отражению
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...