首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Effective C# 原則 42:使用屬性簡化反射 (上)

     編輯:關於C語言

反射與屬性的結合

建立動態可配置系統時,為自有型別、方法、屬性定義自訂屬性,可標示執行意圖、簡化反射查找、減少型別錯誤。

外掛架構需求

主程式需掃描 Addins 目錄下組件,發現並安裝命令處理器。步驟:

  1. Assembly.LoadFrom 載入組件。
  2. 反射列舉匯出型別。
  3. 尋找實作命令處理器的型別與方法。
  4. 決定選單位置與文字。

定義 CommandHandlerAttribute


[AttributeUsage(AttributeTargets.Class)]
public class CommandHandlerAttribute : Attribute
{
    public CommandHandlerAttribute() { }
}

AttributeUsage 限制僅能套用於類別。透過 GetCustomAttributes 快速篩選候選型別:


foreach (string file in Directory.GetFiles(addInsDir, "*.dll"))
{
    Assembly asm = Assembly.LoadFrom(file);
    foreach (Type t in asm.GetExportedTypes())
    {
        if (t.GetCustomAttributes(typeof(CommandHandlerAttribute), false).Length > 0)
        {
            // 發現命令處理器型別,進行配置與安裝
        }
    }
}

屬性讓原本複雜的反射邏輯變得清晰、安全。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved