熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

C# 語言規范--1.14 屬性

2022-06-13   來源: .NET編程 

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

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

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

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

  示例

  [Help()]
public class Class
{
   [Help( Topic = F)]
   public void F() {}
}

  顯示 Help 屬性的幾種用法

  在運行時可以利用反射支持檢索給定程序元素的屬性信息示例

  using System;
class Test
{
   static void Main() {
      Type type = typeof(Class);
      object[] arr = typeGetCustomAttributes(typeof(HelpAttribute) true);
      if (arrLength == )
         ConsoleWriteLine(Class has no Help attribute);
      else {
         HelpAttribute ha = (HelpAttribute) arr[];
         ConsoleWriteLine(Url = {} Topic = {} haUrl haTopic);
      }
   }
}

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


From:http://tw.wingwit.com/Article/program/net/201311/12525.html
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.