Powoduje to wyjątek czasu kompilacji:
public sealed class ValidatesAttribute<T> : Attribute
{
}
[Validates<string>]
public static class StringValidation
{
}
Wiem, że C # nie obsługuje atrybutów ogólnych. Jednak po długim Googlingu nie mogę znaleźć powodu.
Czy ktoś wie, dlaczego typy ogólne nie mogą pochodzić Attribute
? Jakieś teorie?
abstract class Base<T>: Attribute {}
które można wykorzystać do tworzenia innych niż ogólne klasy pochodne, takie jak:class Concrete: Base<MyType> {}
[DependsOnProperty<Foo>(f => f.Bar)]
lub [ForeignKey<Foo>(f => f.IdBar)]
...