C#转Java:什么是[DefaultProperty("value")]?

3
我不理解DefaultProperty Metadata标签是如何工作的,或者它代表什么意义。 我已经阅读了MSDN并查看了示例,但我觉得很困惑。 DefaultPropertyAttribute类 我已经阅读了一些博客,它们似乎涉及索引器。我不确定为什么您要为属性设置元数据?我来自Java背景,也许一个Java类比会有所帮助。
[DefaultProperty("Value")]
    public abstract class FOO<T> : ANY, IBAR<T>
    {
        public FOO() { }
        public FOO(T value) { this.Value = value; }
        public virtual T Value { get; set; }
    }

跟进:属性网格

2个回答

1

这用于属性网格。

当您在设计器中选择一个组件时,它会查找DefaultProperty属性,并默认选择该属性。

您可以安全地忽略它。

DefaultEvent属性类似。


那么它类似于Java的注释,用于抑制警告或覆盖?这只是一条发送给IDE的消息吗? - user295190
1
@Shiftbit:它类似于Java的注释,通常由IDE使用,但你也可以在运行时使用它。任何东西都可以使用它。这个特定的注释用于显示属性表格中的“默认”属性(IDE中的“属性窗口”)。 - Reed Copsey
1
是的。它实际上是由 System.ComponentModel 中的设计架构使用的(而不是 IDE),但是是的。 - SLaks

1

属性是元数据,就像Java注释一样。它们不被应用的类使用,而是被其他类或IDE设计师等使用。


1
没有编译器规定说元数据不能被应用于它们所应用的类/方法。 - dbkk
没错,这只是不太常见的用法。 - jvilalta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接