Это вызывает исключение во время компиляции:
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)]
...