码迷,mamicode.com
首页 > 其他好文 > 详细

自定义Attribute,使用记录

时间:2020-01-08 14:49:02      阅读:84      评论:0      收藏:0      [点我收藏+]

标签:tar   prope   div   特性   AAT   attribute   turn   new   class   

1. 自定义attribute需要继承Attribute基类

    /// <summary>
    /// Datareader反射使用 标记
    /// 标记 属性在Datareader 中的字段名 以便反射赋值
    /// </summary>
    [AttributeUsage(AttributeTargets.Property| AttributeTargets.Field)]
   public class DataReaderModelAttribute:Attribute
    {
        private string datareaderfieldname;
        public string Datareaderfieldname {
            get {
                return this.datareaderfieldname;
            }
        }
        public DataReaderModelAttribute(string datareaderfielname) {
            this.datareaderfieldname = datareaderfielname;
        }

    }

2. 使用自定义特性

 public class ExportRecordModel
 {
        /// <summary>
        /// 日期
        /// </summary>
        [DataReaderModel("预约日期")]
        public string dateName { set; get; }

        /// <summary>
        /// 开始时间
        /// </summary>
        [DataReaderModel("开始时间")]
        public string startTime { set; get; }
 }

3. 利用反射,将拿到字段属性上的值

 ExportRecordModel exReModel = new ExportRecordModel();//新建一个使用了此特性的类
 Type type = exReModel.GetType();
 PropertyInfo[] p_list = type.GetProperties();//获取到此类的所有属性集合
 FieldInfo[] fieldInfos = type.GetFields();//获取到此类的所有字段集合
 if (p_list != null && p_list.Length > 0)
 {
     for (int i = 0; i < p_list.Length; i++)
     {
         Attribute datareaderattr = p_list[i].GetCustomAttribute(typeof(DataReaderModelAttribute), false);
         if (datareaderattr != null)
         {
             DataReaderModelAttribute dataattr = (DataReaderModelAttribute)datareaderattr;
             string attriName = dataattr.Datareaderfieldname;//获取到属性上使用的特性的参数值
         }
     }
 }

这只是attribute其中一个用法,我们可以利用这种用法,将两个字段值不同的类,但字段含义相同的值相互赋值。

自定义Attribute,使用记录

标签:tar   prope   div   特性   AAT   attribute   turn   new   class   

原文地址:https://www.cnblogs.com/wjtstudy/p/12166261.html

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