属性参数类型作为另一个属性
Posted
技术标签:
【中文标题】属性参数类型作为另一个属性【英文标题】:Attribute parameter types as another attribute 【发布时间】:2013-04-27 07:02:14 【问题描述】:在 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# 语言规范似乎暗示不可能做类似的事情,因为它规定有效的属性参数类型是:
以下类型之一:bool、byte、char、double、float、int、long、sbyte、short、string、uint、ulong、ushort。 类型对象。 System.Type 类型。 枚举类型,前提是它具有公共可访问性,并且它所嵌套的类型(如果有)也具有公共可访问性。 上述类型的一维数组。当我尝试写作时,Visual Studio 会向我闪烁各种红色:
[IP (copyright=[Copyright("2008")],trademark=[Trademark("x is a trademark of x, inc")]]
但是语言规范所讨论的这个“类型对象”呢?由于多态性,我的属性“是”对象,那么在 C# 中实现 Java 所允许的完全有可能吗?如果不是,那么“类型对象”如何工作?
【问题讨论】:
不,你不能那样做…… 【参考方案1】:Marc Gravell 说“不,你不能那样做”
【讨论】:
以上是关于属性参数类型作为另一个属性的主要内容,如果未能解决你的问题,请参考以下文章