特性类:
public class ColumnInfoAttribute : Attribute
{
public ColumnInfoAttribute(string name)
{
this.Name = name;
}
public string Name { get; set; }
public bool Visible { get; set; } = true;
}
实体类:
public class Storm
{
//会赋值给ColumnInfoAttribute里面的Name属性,可省略后面的Attribute
[ColumnInfo("号码")]
public int Id { get; set; }
}
控制台主函数:
internal class Program
{
static void Main(string[] args)
{
//1.先利用反射对应属性
var idInfo = typeof(Storm).GetProperty("Id");
if (idInfo != null)
{
//2.利用反射获取属性附加自定义特性
var attributes = idInfo.GetCustomAttributes(typeof(ColumnInfoAttribute), false);
if (attributes.Any())
{
//3.获取特性属性值
var name = ((ColumnInfoAttribute)attributes[0]).Name;
var visible = ((ColumnInfoAttribute)attributes[0]).Visible;
}
}
}
}