介绍属性和定义属性

介绍属性       
       属性为访问自定义类型的注释信息提供通用的访问方式。注释信息是随意的,换句话说,这种信息不是语言自身固有的,而是由你自己能够想象到的任何信息。你能使用属性(attributes)定义设计时信息(诸如文档)、运行时信息(诸如数据库字段名)、以及运行时行为特征(诸如假设成员是事务处理,或者能够参与事务处理)。在某种意义上,关联信息遵循与使用XML开发相同的原理。因为你能创建一个基于你所需的任何信息的属性,现有的一个标准机制适用定义属性自身和适合于查询成员或类型在运行时关于它们的附加属性。利用属性(attributes),我们能给类成员添加附加信息,因此我们能拥有一个完全自声明的组件。
        简单地在目标类型或成员前面的中括号([])指定属性数据,可以向C#类型或成员附加上一个定义属性。

定义属性
      属性(Attribute)实际是一个从类System.Attribute派生的类。类System.Attribute包含了一些为访问和测试定制属性的有用的方法。
      当给一个类型或成员附加上属性时,不用包含后缀Attribute。这是一种快捷方式,由C#语言的设计者协助插入。当编译器发现一个属性是附加在类型或成员上的时,自动用指定的属性名检索System.Attribute派生类。若编译器不能定位类,编译器将向指定的属性名追加Attribute。因而,定义属性类的通用惯例是:定义属性类时已Attribute结尾,并且省略部分名称。
      示例:

None.gif using  System;
None.gif
using  System.Reflection;
None.gif
None.gif
public   enum  RegHives
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif    HKEY_CLASSES_ROOT,
InBlock.gif    HKEY_CURRENT_USER,
InBlock.gif    HKEY_LOCAL_MACHINE,
InBlock.gif    HKEY_USERS,
InBlock.gif    HKEY_CURRENT_CONFIG
ExpandedBlockEnd.gif}

None.gif
None.gif
public   class  RegKeyAttribute : Attribute
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif    
public RegKeyAttribute(RegHives Hive, String ValueName)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
this.Hive = Hive;
InBlock.gif        
this.ValueName = ValueName;
ExpandedSubBlockEnd.gif    }

InBlock.gif
InBlock.gif    
protected RegHives hive;
InBlock.gif    
public RegHives Hive
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
ExpandedSubBlockStart.gifContractedSubBlock.gif        
get dot.gifreturn hive; }
ExpandedSubBlockStart.gifContractedSubBlock.gif        
set dot.gif{ hive = value; }
ExpandedSubBlockEnd.gif    }

InBlock.gif
InBlock.gif    
protected String valueName;
InBlock.gif    
public String ValueName
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
ExpandedSubBlockStart.gifContractedSubBlock.gif        
get dot.gifreturn valueName; }
ExpandedSubBlockStart.gifContractedSubBlock.gif        
set dot.gif{ valueName = value; }
ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif}

None.gif
None.gif
None.gif[RegKey(RegHives.HKEY_CURRENT_USER, 
" SomeClass " )]
None.gif
class  SomeClass
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif    
public int Foo;
InBlock.gif    
public int Bar;
ExpandedBlockEnd.gif}

None.gif
None.gif
public   class  TestResKeyAttribute
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif    
public static void Main()
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif
ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif}

None.gif


转载于:https://www.cnblogs.com/stzyw/archive/2005/09/29/246715.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值