C# 特性Attributes 和反射

一,Attributes 类新建一个子类,DetailAttributes
View Code
二, 在类的属性声明上面加Attributes
public class testAttributes
{
    [Detail(AttrName = "宽度", Html = "<input type='text' />", DefaultValue = "50", DataSource = null)]
    public string username {get;set;}

    public class FactoryDetail
    {
        [Detail(AttrName = "宽度", Html = "<input type='text' />", DefaultValue = "50", DataSource = null)]
        public string Width { set; get; }

        [Detail(AttrName = "高度", Html = "<input type='text' />", DefaultValue = "50", DataSource = null)]
        public string Height { set; get; }

        [Detail(AttrName = "状态", Html = "<select></select>", DefaultValue = null, DataSource = "select text,value from status")]
        public string Status { set; get; }

        [Detail(AttrName = "Tag值", Html = "<input type='text' />", DefaultValue = "", DataSource = null)]
        public string Tag { set; get; }
        [Detail(AttrName = "描述", Html = "<input type='text' />", DefaultValue = "", DataSource = null)]
        public string Desc { set; get; }

        public string test()
        {
            string s = "";
            Type oType = this.GetType();
            foreach (PropertyInfo opi in oType.GetProperties())
            {
                object [] peratt =     opi.GetCustomAttributes(true);
                foreach (var tmp in peratt)
                {
                    if (tmp.GetType() == typeof(FactoryDetail))
                    {
                        DetailAttribute detailAtt = (DetailAttribute)tmp;

                        s += "AttrName: " + detailAtt.AttrName + " ";
                    }
                }
            }
            return s;
        }
    }
}
原文地址:https://www.cnblogs.com/sxypeace/p/4867425.html