这不是一个非常重要的问题,我很好奇为什么不允许这样做。该错误消息无助于解释,因为显然“ Att”确实是从Attribute继承的。
this.props.besvarelsePlagiatstatus.get(70272).erTodeltEksamen
答案 0 :(得分:2)
必须仅在编译时定义属性,因为它存储在dll或exe中。并且只能包含编译时创建的信息。因此,由于这个原因,它不是通用的。
编译器经常使用属性类型或其值,因此以后不能定义它。
在您的示例中,您想用通用参数标记字段:
public class Generic<Att> where Att : System.Attribute
{
[Att] //Error: 'Att' is not an attribute class
public float number;
}
但这等于:
public class Generic<Att> where Att : System.Attribute
{
[Attribute]
public float number;
}
因为Att
以后无法替换。因此,没有理由为属性使用泛型。