Как назначить атрибут ByteSerialize / длину в качестве переменной - PullRequest
0 голосов
/ 29 марта 2019

Я создаю модели с различными типами и длиной, которые используются в качестве запроса / ответа к / от API.

    [ByteSerialize(1)]
    public string ByteLength { get; set; }

    [ByteSerialize()]
    public string Byte { get; set; }

Я хотел бы сначала получить ByteLength, который исходит от API ичтобы передать его [ByteSerialize (?)]

1 Ответ

1 голос
/ 29 марта 2019

Атрибуты инертны - нет волшебного способа заставить вещи происходить автоматически.Кроме того, атрибуты обычно рассматриваются только как метаданные в IL, и как таковые: параметры для них должны быть выражены как константы, а не как значения времени выполнения.Очевидно, это изменится, если вы когда-либо создадите атрибуты как объекты, а не как метаданные, но: ваш пример показывает метаданные.

Чтобы делать то, что вы хотите, вы могли бы делать это вручную, т.е.какой-то метод на ByteSerializeAttribute, и когда ваш код обнаруживает (через PropertyInfo), что атрибут есть, используйте что-то вроде:

var value = property.GetValue(obj);
attrib.SomeMethod(obj, value); // or whatever you need
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...