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)]
...