C# 語言規範--1.14 屬性

來源:互聯網
上載者:User
規範

  C# 是一種命令式語言,但像所有命令式語言一樣,它具有某些聲明性元素。例如,通過將類中的方法聲明為 public、protected、internal、protected internal 或 private,指定它的可訪問性。C# 使此功能一般化,以便程式員可以創造出一種新的聲明性資訊,將此聲明性資訊附加到各種程式實體,並在運行時檢索此聲明性資訊。程式通過定義和使用屬性(第 17 節)來描述這類額外的聲明性資訊。

  例如,一個架構也許會定義一個可放置在程式元素(如類和方法)上的 HelpAttribute 屬性,使開發人員能夠提供從程式元素到其文檔的映射。樣本

using System;
[AttributeUsage(AttributeTargets.All)]
public class HelpAttribute: Attribute
{
   public HelpAttribute(string url) {
      this.url = url;
   }
   public string Topic = null;
   private string url;
   public string Url {
      get { return url; }
   }
}

  定義了一個名為 HelpAttribute 的屬性類,它具有一個定位參數 (string url) 和一個具名引數 (string Topic)。正如第 17.1 節中所解釋的,該屬性可以通過它的完整名稱 HelpAttribute 或通過它的隱式簡稱 Help 引用。定位參數由該屬性類的公用執行個體建構函式的形參定義,具名引數則由屬性類的公用非靜態讀寫欄位和對應的屬性定義。

  樣本

[Help("http://www.microsoft.com/.../Class1.htm")]
public class Class1
{
   [Help("http://www.microsoft.com/.../Class1.htm", Topic = "F")]
   public void F() {}
}

  顯示 Help 屬性的幾種用法。

  在運行時可以利用反射支援檢索給定程式元素的屬性資訊。樣本

using System;
class Test
{
   static void Main() {
      Type type = typeof(Class1);
      object[] arr = type.GetCustomAttributes(typeof(HelpAttribute), true);
      if (arr.Length == 0)
         Console.WriteLine("Class1 has no Help attribute.");
      else {
         HelpAttribute ha = (HelpAttribute) arr[0];
         Console.WriteLine("Url = {0}, Topic = {1}", ha.Url, ha.Topic);
      }
   }
}

  檢查 Class1 是否具有 Help 屬性,如果具有該屬性,則寫出關聯的 Topic 和 Url 值。



相關文章

Cloud Intelligence Leading the Digital Future

Alibaba Cloud ACtivate Online Conference, Nov. 20th & 21st, 2019 (UTC+08)

Register Now >

Starter Package

SSD Cloud server and data transfer for only $2.50 a month

Get Started >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。