大学IT网 - 最懂大学生的IT学习网站! QQ资料交流群:367606806
当前位置:大学IT网 > C#技巧 > .Net内置特性Attribute介绍

.Net内置特性Attribute介绍(2)

关键词:.NetAttribute  阅读(2742) 赞(12)

[摘要]本文是对.Net内置特性Attribute介绍的讲解,对学习C#编程技术有所帮助,与大家分享。

我们看到Obsolete特性在定义时继承了Attribute(这是特性必需的),使用了Serializable、ComVisible和AttributeUsage这三个属性。Serializable属性表明类型支持序列化;ComVisible为 true,指示该托管类型(public 类型)对 COM 是可见的;AttributeUsage定义您自己的特性类时,可通过在特性类上放置 AttributeUsageAttribute 来控制特性类的使用方式。

通过上述的学习并根据前面的需求,我们自定义一个特性RecordAttribute,实现代码如下所示:

//该特性可用于方法和类并且可以重复的特价到一个类型上
    [AttributeUsage(AttributeTargets.Class|AttributeTargets.Method,AllowMultiple = true)]
    public class RecordAttribute : Attribute
    {
        private string _recordType;//记录类型:更新or创建
        private string _author;//作者
        private string _date;//日期
        private string _comment;//备注
        //构造函数
        public RecordAttribute(string recordType, string author, string date)
        {
            _recordType = recordType;
            _author = author;
            _date = date;
        }
        //对于位置参数,通常只提供get访问器

        public string RecordType { get { return _recordType; }}
        public string Author { get { return _author; } }
        public string Date { get { return _date; } }
        //构建一个属性,在特性中也叫做命名参数
        public string Comment { get; set; }
    }

记录类修改或者更新的特性创建好了,下面是使用示例:

[Record("更新", "鞠小军", "2014.8.3", Comment = "添加ToString()方法")]
    [Record("更新", "鞠小军", "2014.8.3")]
    [Record("创建","鞠小军","2014.8.2")]
    public class Message
    {
        //此处具体实现略
        public override string ToString()
        {
            return "添加了ToString()方法";
        }
    }
这样就成功实现了上面的需求,Message类添加的Record属性实际上作为元数据添加到了程序集中。
«上一页12下一页»


相关评论