Cela provoque une exception au moment de la compilation:
public sealed class ValidatesAttribute<T> : Attribute
{
}
[Validates<string>]
public static class StringValidation
{
}
Je me rends compte que C # ne prend pas en charge les attributs génériques. Cependant, après beaucoup de recherches sur Google, je n'arrive pas à trouver la raison.
Est-ce que quelqu'un sait pourquoi les types génériques ne peuvent pas dériver Attribute
? Des théories?
abstract class Base<T>: Attribute {}
qui pourraient être utilisés pour créer des non classes dérivées génériques comme ceci:class Concrete: Base<MyType> {}
[DependsOnProperty<Foo>(f => f.Bar)]
ou [ForeignKey<Foo>(f => f.IdBar)]
...