Действителен (т.е. компилирует и запускает), чтобы поместить атрибут в общий параметр для класса или метода:
public class MyClass<[My] T>
{
private void MyMethod<[My] T>()
{}
}
public class MyAttribute : Attribute
{}
Я никогда не видел, чтобы это использовалось, и я изо всех сил пытаюсь объяснить причину, почему вы захотите.
Является ли это просто причудой/побочным эффектом спецификации языка или существует ли обоснованная/полезная причина для размещения атрибута в этой позиции?