定义一个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);
}
}