これにより、コンパイル時の例外が発生します。
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)]
...