c# AttributeUsage的自定义属性和反射的一些基本用法

定义一个AttributeUsage
定义一个Person属性上面声明AttributeUsage类
new Person转换成 PropertyInfo集合
通过GetCustomAttributes方法获取自定义属性

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace mq
{
    [AttributeUsage(AttributeTargets.Property, AllowMultiple = true, Inherited = false)]
    //是用于在运行时传递程序中各种元素(比如类、方法、结构、枚举、组件等)的行为信息的声明性标签。
    public class HelpAttribute : Attribute
    {
        //转换类属性的名字
        protected string _ConvertName;
        //转换类属性的类型
        protected string _Type;
        //是否转换
        protected bool _IsConvert;

        //转换类属性的名字
        public string ConvertName { get { return _ConvertName; } }
        //转换类属性的类型
        public string Type { get { return _Type; } }
        //是否转换
        public bool IsConvert { get { return _IsConvert; } }
        public HelpAttribute(string ConvertName,string Type, bool IsConvert) {

            this._ConvertName = ConvertName;
            this._Type = Type;
            this._IsConvert = IsConvert;


        }
    }

}


```csharp
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;

namespace mq
{
    [DataContract]
    //继承Conversion接口
    public class Person: IConversion
    {
        [DataMember]
        [HelpAttribute("nameA", "gender", true)]
        public string name { get; set; }
        [DataMember]
        [HelpAttribute("genderA", "gender", true)]
        public gender gender { get; set; }
        [DataMember]
        [HelpAttribute("ageA", "int", true)]
        public int age { get; set; }
    }

    public enum gender
    {= 0,= 1
    }
}

  //把这个类转化成PropertyInfo
  List<PropertyInfo> type = Entity.GetType().GetProperties().ToList<PropertyInfo>();
   foreach (var item in type)
            {
               HelpAttribute helpAttr = null;
                //获取这个属性的Attributes
                object[] HelpAttributes = item.GetCustomAttributes(typeof(HelpAttribute), false);

               helpAttr = HelpAttributes[0] as HelpAttribute;

                获取这个属性的值
                object value = item.GetValue(Entity, null);
            }

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值