Dado lo siguiente, no esperaría que el compilador permita múltiples atributos que se derivan del atributo base, dado que está establecido en AllowMultiple = false. De hecho, se compila sin problemas. ¿Qué me falta aquí?Honrando a AttributeUsage en los tipos de atributos derivados
using System;
[AttributeUsage(AttributeTargets.Property,AllowMultiple=false,Inherited=true)]
abstract class BaseAttribute : Attribute { }
sealed class DerivedAttributeA : BaseAttribute { }
sealed class DerivedAttributeB : BaseAttribute { }
class Sample1
{
[DerivedAttributeA()]
[DerivedAttributeB()]
public string PropertyA{ get; set; } // allowed, concrete classes differ
[DerivedAttributeA()]
[DerivedAttributeA()]
public string PropertyB { get; set; } // not allowed, concrete classes the same, honours AllowMultiple=false on BaseAttribute
}
Temía que ese fuera el caso, gracias por la confirmación. –