Điều này gây ra ngoại lệ thời gian biên dịch:
public sealed class ValidatesAttribute<T> : Attribute
{
}
[Validates<string>]
public static class StringValidation
{
}
Tôi nhận ra C # không hỗ trợ các thuộc tính chung. Tuy nhiên, sau nhiều lần Googling, tôi dường như không thể tìm thấy lý do.
Có ai biết tại sao các loại chung chung không thể xuất phát từ Attribute
? Bất kỳ lý thuyết?
abstract class Base<T>: Attribute {}
được sử dụng , như thế này: có thể được sử dụng để tạo ra không phải các lớp dẫn xuất chung như thế này:class Concrete: Base<MyType> {}
[DependsOnProperty<Foo>(f => f.Bar)]
hoặc [ForeignKey<Foo>(f => f.IdBar)]
...