public class RemarkAttribute : Attribute
{
private string _Remark { get; set; }
public RemarkAttribute(string remark)
{
_Remark = remark;
}
public string GetRemark()
{
return _Remark;
}
}
public enum Number
{
/// <summary>
/// 第一
/// </summary>
[Remark("第一")]
Frist =0,
/// <summary>
/// 第二
/// </summary>
[Remark("第二")]
Second =1,
/// <summary>
/// 第三
/// </summary>
[Remark("第三")]
Thrid =2
}
public static class NumberExtend {
public static string GetRemark(this Number num ) {
Type type = num.GetType();
FieldInfo fieldInfo = type.GetField(num.ToString());//得到字段信息--特性在IL本质是一个字段
if (fieldInfo.IsDefined(typeof(RemarkAttribute),true))//判断字段是否包含此特性
{
RemarkAttribute attr = (RemarkAttribute)fieldInfo.GetCustomAttribute(typeof(RemarkAttribute), true);//得到特性信息
return attr.GetRemark();
}
else
{
return num.ToString();
}
}
}
调用的时候
var info= Number.Frist.GetRemark();
定义 特性 --第三方使用特性 ---然后触发特性