Ini menyebabkan pengecualian waktu kompilasi:
public sealed class ValidatesAttribute<T> : Attribute
{
}
[Validates<string>]
public static class StringValidation
{
}
Saya menyadari C # tidak mendukung atribut generik. Namun, setelah banyak Googling, saya tidak dapat menemukan alasannya.
Adakah yang tahu mengapa tipe generik tidak dapat diturunkan Attribute
? Ada teori?
abstract class Base<T>: Attribute {}
yang dapat digunakan untuk membuat non- kelas turunan generik seperti ini:class Concrete: Base<MyType> {}
[DependsOnProperty<Foo>(f => f.Bar)]
atau [ForeignKey<Foo>(f => f.IdBar)]
...