En este momento está creando aquí lo que se llama un tipo anónimo, no uno dinámico.
Desafortunadamente, no hay forma de lograr lo que está tratando de hacer. Los tipos anónimos están destinados a ser un tipo inmutable muy simple que consiste en pares de nombre/valor.
La versión C# del tipo anónimo solo le permite personalizar el conjunto de pares de nombre/valor en el tipo subyacente. Nada más. VB.Net permite un poco más de personalización ya que los pares pueden ser mutables o inmutables. Sin embargo, ninguno le permite aumentar el tipo con atributos.
Si quiere agregar atributos, necesitará crear un tipo completo.
EDIT OP preguntó si los atributos se podían agregar mediante reflexión.
No, esto no se puede hacer. La reflexión es una forma de inspeccionar los metadatos no mutando. Por lo tanto, no se puede usar para agregar atributos.
Además, las definiciones de tipos en un ensamblado, y en general, son inmutables y no se pueden mutar en el tiempo de ejecución [1]. Esto incluye la adición de atributos a un método. Entonces, otras tecnologías similares a reflexiones tampoco pueden usarse aquí.
[1] La única excepción a esto es la operación ENC
Tienes razón, me refería al tipo Anon, gracias por la aclaración. – will