zoukankan      html  css  js  c++  java
  • 【翻译】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

  • 相关阅读:
    Ant-编译构建(2)-第3方jar包引入、log4j2
    Ant-编译构建(1)-HelloWorld
    java List的初始化
    传入json字符串的post请求
    HttPclient 以post方式发送json
    cron表达式详解,cron表达式写法,cron表达式例子
    深入理解SQL的四种连接-左外连接、右外连接、内连接、全连接
    Java两种延时——thread和timer
    List<List<Object>> list = new ArrayList<List<Object>>(); 求回答补充问题 list.get(position).add(Object);为什么会报错啊我想在对应的list里面添加对象
    关于 charset 的几种编码方式
  • 原文地址:https://www.cnblogs.com/qishichang/p/2093713.html
Copyright © 2011-2022 走看看