Вы на самом деле создаете так называемый анонимный тип, а не динамический.
К сожалению, нет, нет способа достичь того, что вы пытаетесь сделать. Под анонимными типами подразумевается очень простой неизменный тип, состоящий из пар имя / значение.
Версия C # анонимного типа позволяет настраивать только набор пар имя / значение для базового типа. Ничего больше. VB.Net позволяет немного больше настройки в том, что пары могут быть изменяемыми или неизменными. Также не позволяйте дополнять тип атрибутами.
Если вы хотите добавить атрибуты, вам нужно создать полный тип.
EDIT OP спросил, можно ли добавить атрибуты с помощью отражения.
Нет, это не может быть сделано. Отражение - это способ проверки метаданных, а не их изменение. Следовательно, его нельзя использовать для добавления атрибутов.
Кроме того, определения типов в сборке, как правило, являются неизменяемыми и не могут быть изменены во время выполнения [1]. Это включает добавление атрибутов к методу. Таким образом, другие рефлексии, такие как технологии, также не могут быть использованы здесь.
[1] Единственным исключением является операция ENC