Isso causa uma exceção em tempo de compilação:
public sealed class ValidatesAttribute<T> : Attribute
{
}
[Validates<string>]
public static class StringValidation
{
}
Sei que o C # não suporta atributos genéricos. No entanto, depois de muito pesquisar no Google, parece que não consigo encontrar o motivo.
Alguém sabe por que os tipos genéricos não podem derivar Attribute
? Alguma teoria?
abstract class Base<T>: Attribute {}
que poderia ser usada para criar classes derivadas genéricas como esta:class Concrete: Base<MyType> {}
[DependsOnProperty<Foo>(f => f.Bar)]
ou [ForeignKey<Foo>(f => f.IdBar)]
...