สิ่งนี้ทำให้เกิดข้อยกเว้นเวลาคอมไพล์:
public sealed class ValidatesAttribute<T> : Attribute
{
}
[Validates<string>]
public static class StringValidation
{
}
ฉันรู้ว่า C # ไม่รองรับคุณสมบัติทั่วไป อย่างไรก็ตามหลังจาก Googling มากฉันไม่สามารถหาเหตุผลได้
ไม่มีใครรู้ว่าทำไมประเภททั่วไปไม่สามารถได้มาจากAttribute
ไหน? ทฤษฎีใด ๆ
abstract class Base<T>: Attribute {}
ซึ่งอาจจะใช้ในการสร้างที่ไม่ใช่ คลาสทั่วไปที่ได้รับเช่นนี้:class Concrete: Base<MyType> {}
[DependsOnProperty<Foo>(f => f.Bar)]
หรือ[ForeignKey<Foo>(f => f.IdBar)]
...