¿Por qué C # prohíbe los tipos de atributos genéricos?

Esto provoca una excepción en tiempo de compilación:

public sealed class ValidatesAttribute<T> : Attribute
{

}

[Validates<string>]
public static class StringValidation
{

}

Me doy cuenta de que C # no admite atributos genéricos. Sin embargo, después de mucho buscar en Google, parece que no puedo encontrar la razón.

¿Alguien sabe por qué los tipos genéricos no pueden derivar deAttribute? Alguna teoria?

Respuestas a la pregunta(7)

Su respuesta a la pregunta