这会导致编译时异常:
public sealed class ValidatesAttribute<T> : Attribute
{
}
[Validates<string>]
public static class StringValidation
{
}
我意识到C#不支持通用属性。但是,经过大量谷歌搜索之后,我似乎找不到原因。
有谁知道为什么泛型类型不能衍生自Attribute
?有什么理论吗?
abstract class Base<T>: Attribute {}
可用于创建非通用派生类如下:class Concrete: Base<MyType> {}
[DependsOnProperty<Foo>(f => f.Bar)]
或[ForeignKey<Foo>(f => f.IdBar)]
...