De forma predeterminada, Attributelos mensajes de correo electrónico están limitados a aplicarse solo una vez a un solo campo / propiedad / etc. Puede ver esto en la definición de la Attributeclase en MSDN :
[AttributeUsageAttribute(..., AllowMultiple = false)]
public abstract class Attribute : _Attribute
Por lo tanto, como han señalado otros, todas las subclases están limitadas de la misma manera, y si necesita varias instancias del mismo atributo, debe establecer explícitamente AllowMultipleen true:
[AttributeUsage(..., AllowMultiple = true)]
public class MyCustomAttribute : Attribute
En los atributos que permiten múltiples usos, también debe anular la TypeIdpropiedad para asegurarse de que propiedades como PropertyDescriptor.Attributes funcionan como se espera. La forma más sencilla de hacer esto es implementar esa propiedad para devolver la instancia del atributo en sí:
[AttributeUsage(..., AllowMultiple = true)]
public class MyCustomAttribute : Attribute
{
public override object TypeId
{
get
{
return this;
}
}
}
(Publicar esta respuesta no porque los demás estén equivocados, sino porque es una respuesta más completa / canónica).