Атрибуты инертны - нет волшебного способа заставить вещи происходить автоматически.Кроме того, атрибуты обычно рассматриваются только как метаданные в IL, и как таковые: параметры для них должны быть выражены как константы, а не как значения времени выполнения.Очевидно, это изменится, если вы когда-либо создадите атрибуты как объекты, а не как метаданные, но: ваш пример показывает метаданные.
Чтобы делать то, что вы хотите, вы могли бы делать это вручную, т.е.какой-то метод на ByteSerializeAttribute
, и когда ваш код обнаруживает (через PropertyInfo
), что атрибут есть, используйте что-то вроде:
var value = property.GetValue(obj);
attrib.SomeMethod(obj, value); // or whatever you need