码迷,mamicode.com
首页 > Windows程序 > 详细

C#特性

时间:2015-01-21 18:24:17      阅读:343      评论:0      收藏:0      [点我收藏+]

标签:

<1>

 

C#特性学习笔记


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace WebApplication1
{
    //Attribute 类
    //TypeId属性: 当在派生类中实现时,获取该 Attribute 的唯一标识符。


    //AttributeUsageAttribute 类   (AttributeUsageAttribute 类是继承自 Attribute 的)
    //AttributeUsageAttribute.Inherited 属性:获取或设置一个布尔值,该值指示指示的属性能否由派生类和重写成员继承。如果该属性可由派生类和重写成员继承,则为 true,否则为 false。默认为 true。
    //AttributeUsageAttribute.AllowMultiple 属性:获取或设置一个布尔值,该值指示能否为一个程序元素指定多个指示属性实例。如果允许指定多个实例,则为 true;否则为 false。默认为 false。
    //AttributeUsageAttribute.ValidOn 属性:获取一组值,这组值标识指示的属性可应用到的程序元素。属性值:一个或多个 AttributeTargets 值。默认为 All。


    //注意:对于一个特性类使用Attribute后缀是一个惯例。然而,如果不添加编译器会自动添加匹配。


    //限定特性类的应用范围  (这里规定ClassMsg这个特性类只能用于类和字段)
    [AttributeUsage(AttributeTargets.Class | AttributeTargets.Field, AllowMultiple = true, Inherited = false)]
    //定制MsgAttribute特性类,继承于Attribute  
    public class ClassMsgAttribute : Attribute
    {
        //定义_msg字段和Msg属性//Msg属性用于读写msg字段  
        string _msg;
        public string Msg { get { return _msg; } set { _msg = value; } }
        public ClassMsgAttribute() { }
        //重载构造函数接收一个参数,赋值给_msg字段  
        public ClassMsgAttribute(string s) { _msg = s; }
    }



    //---------------------调用ClassMsg这个特性---------------------//

    //在Person类上标记ClassMsg特性  
    [ClassMsg(Msg = "这是关于人的姓名信息的类")]
    class Person
    {
        //在_name字段上应用ClassMsg特性  
        [ClassMsg("这是存储姓名的字段")]
        string _name;
        //以下特性无法应用,因为MsgAttribute定义的特性只能用于类和字段  
        //[ClassMsg("这是读写姓名字段的属性")]  
        public string Name { get { return _name; } set { _name = value; } }
    }  

}


C#特性

标签:

原文地址:http://blog.csdn.net/fanbin168/article/details/42970221

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!