1. 程式人生 > >Mvc總結-特性(Attributes)

Mvc總結-特性(Attributes)

lte urn 存在 () 提示 ltr 篩選器 pre rdquo

1.定義

  MSDN定義:公共語言運行時允許你添加類似關鍵字的描述聲明,叫做attributes, 它對程序中的元素進行標註,如類型、字段、方法和屬性等。Attributes和Microsoft .NET Framework文件的元數據保存在一起,可以用來向運行時描述你的代碼,或者在程序運行的時候影響應用程序的行為。具體使用示例如下:

[Obsolete]  //此屬性為廢棄
public string Demo()
{
    return "";
}

  該方法前面標明[Obsolete]特性,調用該方法時則提示”方法已過時“提示。

2.應用場景

  特性可與反射方法搭配,可返回引用該特性方法或者類的信息,用於描述展示引用對象信息。具體如下:

    //自定義作者特性
    public class Author : System.Attribute
    {
        public string Name { get; set; }    //名稱
        public double Version { get; set; } //版本    

        public Author(string _name, double _version)
        {
            this.Name = _name;
            this.Version = _version;
        }

        public string GetInfo()
        {
            return "名稱:" + Name + ",版本:" + Version;
        }
    }
    
    //引用特性類
    [Author("HJX", 1.1)]
    class FirstClass
    {
        // ...
    }

    //利用反射方法,調用特性輸出類信息
    public string Index()
    {
            //調用打印作者方法
            string ExcultResult = PrintAuthorInfo(typeof(FirstClass));
            returnExcultResult;
    }

        //具體反射方法實現
        private static string PrintAuthorInfo(System.Type t)
        {
            string Result = "";
            System.Attribute[] attrs = System.Attribute.GetCustomAttributes(t);  

            foreach (System.Attribute attr in attrs)
            {
                if (attr is Author)
                {
                    Author a = (Author)attr;
                    Result = a.GetInfo();
                }
            }
            return Result;
        }

    

  總結:特性除了用於描述對象信息之外,還可以與Filter(篩選器)結合實現AOP編程,具體方法詳見AOP編程-Filter(篩選器)

Mvc總結-特性(Attributes)