use*_*517 11 c# generics attributes
这不是一个非常重要的问题,我只是好奇为什么不允许这样做.该错误消息不是在解释有帮助的,因为很明显,"ATT" 并从属性继承.
public class Generic<Att> where Att : System.Attribute
{
[Att] //Error: 'Att' is not an attribute class
public float number;
}
Run Code Online (Sandbox Code Playgroud)
属性必须在编译时定义,只是因为它存储在 dll 或 exe 中。并且只能包含编译时创建的信息。因此,由于这个原因,它不能通用。
编译器经常使用属性类型或其值,因此您无法稍后定义它。
在您的示例中,您想使用通用参数标记字段:
public class Generic<Att> where Att : System.Attribute
{
[Att] //Error: 'Att' is not an attribute class
public float number;
}
Run Code Online (Sandbox Code Playgroud)
但它等于:
public class Generic<Att> where Att : System.Attribute
{
[Attribute]
public float number;
}
Run Code Online (Sandbox Code Playgroud)
因为Att
以后无法更换。因此,没有理由对属性使用泛型。
归档时间: |
|
查看次数: |
140 次 |
最近记录: |