在Java中,可以通过声明具有另一个注释类型的注释参数来组合注释。例如,我可以写这个组合:
@interface Copyright {
String value();
}
@interface Trademark {
String value();
}
@interface IP {
Copyright copyright();
Trademark trademark();
}
@IP(copyright = @Copyright("2013"), trademark = @Trademark("x is a trademark of x inc"))
class MyClass{}
C#语言规范似乎表明不可能做类似的事情,因为它声明了有效的属性参数类型:
当我尝试编写时,Visual Studio会向我闪烁各种红色:
[IP (copyright=[Copyright("2008")],trademark=[Trademark("x is a trademark of x, inc")]]
但是语言规范所讨论的这个“类型对象”呢?由于多态性,我的属性“是一个”对象,所以在C#中实现Java允许的是什么呢?如果没有那么“类型对象”如何工作?
答案 0 :(得分:0)
Marc Gravell说:“不,你不能这样做”