• C#(99):属性 Attribute


    一、创建属性

    [AttributeUsage(AttributeTargets.Class | AttributeTargets.Constructor, AllowMultiple = true, Inherited = true)]
    //AttributeTargets:属性应用到的目标类型。AllowMultiple:是否允许一个元素应用多个此属性。Inherited:属性能否有派生类继承。
    public class CodeStatusAttribute : Attribute
    {
        private string status;
        public CodeStatusAttribute(string status)//构造函数为位置参数
        {
            this.status = status;
        }
        public string Tester { set; get; }//属性和公共字段为命名参数
        public string Coder { set; get; }
        
        public override string ToString()
        {
            return status;
        }
    }

    二、应用属性

    //1、使用单个属性
    [CodeStatus("a版")]
    public class Tringe
    { }
    
    //2、使用多个属性
    [CodeStatus("b版", Coder = "小李")]
    [CodeStatus("b版", Coder = "小王")]
    //也可以[CodeStatus("aa",Coder="小李"),CodeStatus("aa",Coder="小王")]
    public class Square
    { }
    
    //3、使用位置参数和命名参数
    //type表示此属性与什么元素关联,可能有:assembly,field,method,param,property,return,moudule,event,type等。。
    [type: CodeStatus("最终版", Coder = "小李", Tester = "老李")]
    public class Circle
    {
        [CodeStatus("最终版", Coder = "小李", Tester = "老李")]
        public Circle()
        {
    
        }
    }

    三、反射属性

    //1、获取类上的属性。
    Type t = typeof(Circle);
    Attribute[] attArr = Attribute.GetCustomAttributes(t, typeof(CodeStatusAttribute));
    //
    object[] attArr1 = t.GetCustomAttributes(typeof(CodeStatusAttribute), true);
    
    //2、获取成员上属性
    Attribute[] attArr3 = t.GetConstructors()[0].GetCustomAttributes().ToArray();//构造函数,获取字段GetField("..")
    
    //3、遍历
    foreach (Attribute attr in attArr3)
    {
        CodeStatusAttribute item = (CodeStatusAttribute)attr;
        Console.Write(item.ToString() + item.Coder + item.Tester);
    }

    四、Net内置属性

    [Condeitonal] //条件控制
    [Obsolete] //废弃属性
    [Serializable]//可序列化属性
    [AssemblyDelaySign] //程序集延迟签名
  • 相关阅读:
    GridView鼠标悬浮
    GridView控件属性及应用(转载)
    GridView动态绑定按钮
    GridView隐藏列, 并能读取列值的解决方法(转载)
    Oracle语句需要注意的地方
    Oracle数据库创建一个主键ID自增的表
    微软宣布.NET开源:关键软件技术兼容各大平台
    全球排名前50网站都用什么语言开发的?
    钢琴
    SQL函数
  • 原文地址:https://www.cnblogs.com/springsnow/p/9433923.html
Copyright © 2020-2023  润新知