【翻译】MSDN文档对类DefaultValueAttribute的描述有些混淆

你可能在下面MSDN中找到DefaultValueAttribute类的说明

http://msdn.microsoft.com/zh-cn/library/system.componentmodel.defaultvalueattribute(v=vs.80).aspx

文档特别说明:

成员默认值通常是其初始值。

从这,你可能推断出如果你设置属性的DefaultValue attribute,属性被初始化为设置的值。

然而,你应该设置属性的DefaultValue attribute等于其初始值。

使用Attributes扩展元数据

Microsoft .NET Framework Developer's Guide的使用Attributes扩展元数据主题中说明:

公共语言运行库允许你添加类似关键字的描述性声明,调用attributes,注释编程元素例如类型、字段、方法和属性。Attributes被保存在Microsoft .NET Framework元数据文件中,可以用来描述你的代码到运行库或者影响运行时的程序行为。

如果属性的attribute等于它的初始值,你可以访问属性的元数据来确定默认值。那么如果需要,你可以使用默认值来重置相应的成员变量。你也可以编写代码生成器来使用DefaultValue attribute来确定代码是否生成成员变量。你必须确定代码是否应该为成员变量适当的设置到它的初值值。

然而,DefaultValue属性不能使用attribute的值来初始化初始值。例如,在下面的代码示例中,属性IsValueSet的默认值为True并且也被初始化到值True。如果没有初始化,m_isValueSet的初始值为False

[Visual Basic]

Imports System.ComponentModel
 
Public Class DefaultAttributeSample
    
'
    ' You must still initialize your member variable to its default value;
    ' the DefaultValue attribute does not do this.
    Private m_isValueSet As Boolean = True
 
    
'
    ' The DefaultValue attribute should be equal to the member's initial
    ' value.
    <DefaultValueAttribute(True)> _
    
Public Property IsValueSet() As Boolean
        
Get
            IsValueSet 
= m_isValueSet
        
End Get
        
Set(ByVal Value As Boolean)
            m_isValueSet 
= Value
        
End Set
    
End Property
 
End Class

 

 

更多关于如何应用属性以提供元数据给公共运行库,使用Attributes扩展元数据

因为你可以在设计器显示组件例如Visual Studio .NET或者Visual Studio 2005,组件需要提供元数据给设计时工具的attributes

为了在设计时正确显示你的控件和它的成员,设计时attributes是基础因为它们为可视设计工具提供可用信息,CategeoryAttribute attribute能够使属性浏览器在Alignment分类下显示属性TextAlignmentDescriptionAttribute attribute能够使属性浏览器在用户点击该属性时提供简要说明。

[Visual C#]
[Category("Alignment"),

 Description("Specifies the alignment of text.")]

public ContentAlignment TextAlignment { //... }               

[Visual Basic]
 
  
  < Category( " Alignment " ), _
    Description(
" Specifies the alignment of text. " ) >  _
   
Public   Property  TextAlignment  As  ContentAlignment
      
'  ...
    End Property
              

注:在Microsoft Visual C# .NET, Microsoft Visual Basic .NET, 或者在 Microsoft Visual Basic 2005,你可以在attribute语法上把类AttributeNameAttribute简作AttributeName

转载于:https://www.cnblogs.com/qishichang/archive/2011/06/29/2093713.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值