天天看點

C#進階程式設計——Reflection反射

主目錄:https://www.v2know.com/MainPage/Category/CSharp

C#進階程式設計——Reflection反射

C#進階程式設計——Reflection反射

反射就像在主程式裡面,安裝了一個聲納探測器,

在生命周期一開始的時候,就會調用探測器,你的方法執行依賴于聲納反射回來的聲波,

這樣的做的好處是,當你想更新程式的時候,隻需要加dll就行了,

不需要重新編譯。

這樣,就成了插件式的程式設計。

執行個體:

using System;

[AttributeUsage(AttributeTargets.All)]

public class HelpAttribute : System.Attribute

{

   public readonly string Url;

   public string Topic  // Topic 是一個命名(named)參數

   {

      get

      {

         return topic;

      }

      set

      {

         topic = value;

      }

   }

   public HelpAttribute(string url)  // url 是一個定位(positional)參數

   {

      this.Url = url;

   }

   private string topic;

}

[HelpAttribute("Information on the class MyClass")]

class MyClass

{

}

namespace AttributeAppl

{

   class Program

   {

      static void Main(string[] args)

      {

         System.Reflection.MemberInfo info = typeof(MyClass);

         object[] attributes = info.GetCustomAttributes(true);

         for (int i = 0; i < attributes.Length; i++)

         {

            System.Console.WriteLine(attributes[i]);

         }

         Console.ReadKey();

      }

   }

}

輸出:

HelpAttribute
           

參考文檔:

[1] C# 反射(Reflection) | 菜鳥教程

[2] C# 入門(19) 反射(reflection)和特性(attribute)