Esto provoca una excepción en tiempo de compilación:
public sealed class ValidatesAttribute<T> : Attribute
{
}
[Validates<string>]
public static class StringValidation
{
}
Me doy cuenta de que C # no admite atributos genéricos. Sin embargo, después de mucho buscar en Google, parece que no puedo encontrar la razón.
¿Alguien sabe por qué los tipos genéricos no pueden derivar Attribute? Alguna teoria?
abstract class Base<T>: Attribute {}que podría usarse para crear clases derivadas genéricas como esta:class Concrete: Base<MyType> {}
[DependsOnProperty<Foo>(f => f.Bar)]o [ForeignKey<Foo>(f => f.IdBar)]...